原生js实现java的spring框架
发布于 2 年前 作者 892280082 8341 次浏览 来自 分享

前言

写一些简单的应用node比java方便太多了,如果有了spring加成岂不是更加如虎添翼,嘿嘿。

传送门

spring-ioc

介绍

  • 原生js实现
  • 不依赖第三方库
  • 不需要babel编译
  • 开发模式与java的spring一致,运行时可以拿到注解。

代码用例

代码用例

主程序代码 ./app/Application.js

const {SpringProxy} = require('../spring')

//@Proxy(annotation=Service)
class TransactionManager {
	//beanDefine:定义和注解  bean:实例
	doProxy(beanDefine,bean){
		return new SpringProxy(bean,{
			method(wrapBean,method,args){
				console.log(`TransactionManager: 拦截方法:${method} 参数替换:[${args} => 你好]`);
				return wrapBean.invoke(["你好 "])
			}
		})
	}
}


//@Service
class Service {

	//@Value(config.app.msg)
	appMsg;

	say(userMsg){
		return `${userMsg} ${this.appMsg} \n`;
	}

}

//@SpringBoot
class Application {

	//@SpringFactory
	factory;

	//@Autowired
	service;
	
	main(){
		console.log(this.service.say("hello"))
	}
}

module.exports = {Application,Service,TransactionManager}

启动代码 applicationBoot.js

const {SpringBoot} = require("./Spring")

//正式使用的时候 删除packageName属性
new SpringBoot({srcList:["./app"],packageName:"./spring"}).run();

一些感谢的话

感谢开源大佬和社区的贡献,世界有你们更精彩。

** 如果觉得还不错,麻烦给个星星🤭,方便在乌鲁木齐找个工作 讨碗饭吃 哈哈。 **

4 回复

自己占个小板凳****

反对意见,node有node的写法,go有go的写法,java那坨还不舍得丢掉

同意楼上,java 那套依赖注入、控制反转思想,用尽各种反射技巧来解耦,在JS里面根本不是个问题。动态语言就是这点好,直接在运行时把字符串声明成对象。正因为这种强大的特性,才出现了node 无栈开发:https://wuyuan.io 如果用 java 搞一个支持动态加载 class 并且可以实时运行的云开发平台,就好比 eclipse 搬到云上,复杂到不敢想象。

@zengming00 node有什么写法。。。从来没有听说过

回到顶部