Spring+Struts时,Struts的action的类交由Spring管理,启动项目后,调用action时,Spring就自动注入了需要的对象
现在我不使用Struts,想在类里面注入对象
必须
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"});
Example example = (Example)appContext.getBean("example");
获得Example的对象
如果有多个类的话、是不是每个类里面都有如上的代码啊、应该怎么配置才能自动的注入对象呢?

解决方案 »

  1.   

    你看看spring和hibernate、struts的整合,其中讲的非常清楚
    还有spring是通过反射机制实现,所以你应该去理解原理,知道原理之后你就好明白
      

  2.   

    我也刚学spring ,我谈谈我的理解,如果有错的地方,请指出,共同学习。
    ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"}); 
    Example example = (Example)appContext.getBean("example"); 
    你这个代码可以知道你“spring.xml”的代码就有
    <beans>
    <bean id="example" class="``````">
    </beans>如果有多个类,那xml肯定就有多个<bean>如果类之间没关系,就体现不出Spring的有点。就只是不用new了。依赖注入主要是注入,
    你看下面的代码,dao,biz,action,
    在dao这个类里,要把sessionFactory注入进入TblUserBiz,要把TblUserDAO注入进入,·······等等··
    当我们要一个biz的时候
    ApplicationContext cont = new  ClassPathXmlApplicationContext("applicationContext.xml"); 
    UserImpl u = (UserImpl) cont.getBean("TblUserBiz");这样就行了,就不用在new一个dao,spring 就会自动把TblUserDAO注入进入,因为,com.yangtianb.biz.UserImpl这个biz类里有个setTbluser方法,
    private TblUserDaoImpl tblusedao = null;

    public void setTbluser(TblUserDaoImpl tbluser) {
    this.tblusedao = tbluser;
    }其实我认为框架就是反射,注入就是反射了,它的set方法,当然也有构造方法,当类多了,关系复杂了,spring的优点就体现出来了。
    <!-- Dao -->
    <bean id="TblUserDAO" class="com.yangtianb.dao.TblUserDaoImpl">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <!-- biz -->
    <bean id="TblUserBiz" class="com.yangtianb.biz.UserImpl">
    <property name="tbluser" ref="TblUserDAO"></property>
    </bean>
    <!-- actin -->
    <bean name="/tblUser" class="com.yangtianb.web.action.TblUserAction">
    <property name="userbiz" ref="TblUserBiz"></property>
    </bean>
      

  3.   

    对 我想 只有这样了 每个类都加上它 ,但可以把这个做个工厂 啊,和struts 是没关系的 你以前怎么注入 先在就怎么注入呗;;
      

  4.   


    为什么要每个类都有,传bean ID,写个获取的公共方法不就可以了。推荐 SPRING框架高级编程.PDF Rod Johnson 蒋培[译者] LZ这绝对是一本开发用的好书,正在用。
      

  5.   

    那如果多个地方引用UserImpl的话、或者有多个类似UserImpl实现类的话、都必须通过
    ApplicationContext cont = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    UserImpl u = (UserImpl) cont.getBean("TblUserBiz"); 
    来创建了
      

  6.   


    struts不用写
    ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"}); 
    ...
      

  7.   

    呃。。你用struts几? 如果是struts2,直接在spring的配置文件里面配置好DAO的bean,然后在Action中属性加入要注入的DAO,并设置seter方法就OK了。
      
      

  8.   

    用Structs等web框架时,可以通过配置web.xml将spring和struts等关联的。
    对于单独的应用程序,当然需要手动的将spring配置文件导入了,不过也不需要每个类都加上那一段。
    可以写一个工具类的静态方法,一次将文件读到一个静态的变量中,这样就不用每次都去读文件了。