我们系统的URL请求最后面是action的ID,例如“userlist”是调用UserList这个bean来显示用户列表,需要通过一个字符串的BeanId获取到对应的Bean实例,目前这是用Spring的bean管理实现的,即在每个action类中都加一行注释:
import org.springframework.stereotype.Component;
@Component("userlist")
然后Spring配置文件applicationContext.xml如下:<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="...">
<context:component-scan base-package="action文件所在的包"/>
</beans>
需要调用时则:ApplicationContext ctx = (ApplicationContext) getServletContext().getAttribute("context");
BaseAction action = (BaseAction) ctx.getBean(BeanId);这种方式很简单,不必写spring配置文件,只需要在action类中加一行注释,唯一美中不足的是:如此简单的一个需求却需要把庞大的Spring框架引进来(实际需要sping-core.jar spring-context.jar spring-beans.jar spring-web.jar四个jar包,但这些似乎也太多了),Spring其它东西我们都用不着,是否有简单的框架或者实现方式呢?
(自己写我觉得似乎挺难的)

解决方案 »

  1.   

    你想模仿他类似的功能? 那看他源码最方便了。呵呵,XDoclet也有这个功能,去看下源码吧。如何读取 annotation 的。
      

  2.   

    楼上理解错了,XDoclet只是利用注释生成配置文件的,我其实是想实现spring的BeanFactory,有些鉴于Spring的庞大而推出的更轻量级的代替品框架如guice,关注点却是在IOC上,而没有实现BeanFactory,我很想找一个专门实现BeanFactory的简单框架。
      

  3.   


    那看他源码就知道了啊,将你要的部分提取出来了,听说 Googel有个框架要 Guice的,看看是不是你要找的。
      

  4.   

    自己用XML加工厂实现也不难吧,对注释没有什么好感.系统运行时加载XML文档内容到静态MAP中
    ID做键,className做值,工厂使用MAP借ID获取className,反射一个就完成了.
      

  5.   

    我就想找个更轻量级的bean factory!而且是用注释,因为这样最简单。
    谁知道有哪个项目能做这个吗?