锁定老帖子 主题:spring根据注解自动去装载的一个问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-12-07
public class MainFunction { @RequestMapping("/dofunction-{functionCode}.htm") public String doFunction(@PathVariable("functionCode") String strFunctionCode,ModelMap model) { ProxyFunction function = new ProxyFunction( SpringContext.getBean(strFunctionCode) ); function.doFunctionWorks(); return "result"; } } 提交到后台的/dofunction-A0001.htm,/dofunction-A0002.htm这样的请求,都会由doFunction这个函数来处理。在doFunction这个函数里,代理类ProxyFunction 会根据A0001,A0001...等这样的functionCode,来确定初始化哪个类。并调用这个类的doFunctionWorks来完成计算工作。 在spring配置文件中,就这样的配置: <bean id="A001" class="test.test1.FunctionA"></bean> <bean id="A002" class="test.test1.FunctionB"></bean> <bean id="A003" class="test.test1.FunctionC"></bean> 同时,FunctionA,FunctionB,FunctionC……每个类的都有这样的注解: @AnnotationOfFunc(funcCode="A001") public class test.test1.FunctionA { …… } 我现在的问题是: 实际上存在A001,A002,A003……。总量大概好几百上千个,这样的话spring配置文件中要配置太多。有没有一种解决方案,使得在F @RequestMapping("/dofunction-{functionCode}.htm") public String doFunction(@PathVariable("functionCode") String strFunctionCode,ModelMap model) { ProxyFunction function = new ProxyFunction( SpringContext.getBean(strFunctionCode) ); 中,不需要去写ProxyFunction function = new ProxyFunction( SpringContext.getBean(strFunctionCode) );这句话,spring自动根据("/dofunction-{functionCode}.htm")中的functionCode,找到FunctionA,或者FunctionB(根据注解去匹配)然后装配进来,这样后面就可以直接用了。 我看了spring的自动装载功能,好像还没有根据注解去装载的。 哪位精通spring的,能否提示一个可行的解决方案? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-12-07
@AnnotationOfFunc(funcCode="A001") public class test.test1.FunctionA { …… } 这段代码里面的@AnnotationOfFunc(funcCode="A001")意义是什么? |
|
返回顶楼 | |
发表时间:2012-12-07
char1st 写道 @AnnotationOfFunc(funcCode="A001") public class test.test1.FunctionA { …… } 这段代码里面的@AnnotationOfFunc(funcCode="A001")意义是什么? 就是做个标记,表示这个类的功能编号是A001。每个功能都有唯一的编号。 |
|
返回顶楼 | |
发表时间:2012-12-07
可以考虑扩展spring的数据绑定完成。如@Func("functionCode") 拿到functionCode数据,到spring容器拿组件创建ProxyFunction
可以参考我之前写的: http://jinnianshilongnian.iteye.com/blog/1717180 http://jinnianshilongnian.iteye.com/blog/1719952 |
|
返回顶楼 | |
发表时间:2012-12-08
Sping 直接用注解生成bean,就不用配置了
|
|
返回顶楼 | |
发表时间:2012-12-10
1. component-scan
2. test.test1.FunctionX 构建bean时,自动注册到一个map中 3. 然后根据map.get("AXXX"),去拿的bean |
|
返回顶楼 | |
发表时间:2012-12-10
iamiwell 写道 1. component-scan
2. test.test1.FunctionX 构建bean时,自动注册到一个map中 3. 然后根据map.get("AXXX"),去拿的bean 多谢,提供了一个不错的思路!! |
|
返回顶楼 | |
发表时间:2012-12-10
gehy1 写道 Sping 直接用注解生成bean,就不用配置了
不好意思,没理解。能详细点吗? |
|
返回顶楼 | |
发表时间:2012-12-10
我认为你的结构本身就有问题。你应该是想想为什么会出现这种情况,应该如何处理。而不是削足适履。
|
|
返回顶楼 | |
发表时间:2013-02-18
魔力猫咪 写道 我认为你的结构本身就有问题。你应该是想想为什么会出现这种情况,应该如何处理。而不是削足适履。
我面临的情况是这样的:系统有1000多个功能,每个功能都是遵循一定规则独立开发出来的jar包,每个包里面有对应的功能编号。对应网站上也有1000多个链接(http://ip/001.htm,http://ip/002.htm,……),这些链接会统一提交到一个公共的controller里面来,在公共的controller里面,就需要根据001,002自动调用那些独立开发出来的各种jar包。对于这个结构您有更好的建议,渴请赐教。 |
|
返回顶楼 | |