Spring+Struts时,Struts的action的类交由Spring管理,启动项目后,调用action时,Spring就自动注入了需要的对象
现在我不使用Struts,想在类里面注入对象
必须
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"});
Example example = (Example)appContext.getBean("example");
获得Example的对象
如果有多个类的话、是不是每个类里面都有如上的代码啊、应该怎么配置才能自动的注入对象呢?
现在我不使用Struts,想在类里面注入对象
必须
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"});
Example example = (Example)appContext.getBean("example");
获得Example的对象
如果有多个类的话、是不是每个类里面都有如上的代码啊、应该怎么配置才能自动的注入对象呢?
解决方案 »
- ScheduledThreadPoolExecutor定时问题,求高手!在线等!!!!!!
- java jsp显示对数据
- Linux中tomcat运行中出错,求高手指点
- Tomcat5.5连SQL2000+pack4启动抛异常,不知道哪里出问题了,急死了~~~~
- hibernate 自增主键冲突问题
- jsp+servlet问题,跪求解决。
- JSP页面生成XML的问题,问题解决后马上给分!!!
- 那里可以下载log4j.jar 马上给分
- struts绝对不如webwork2
- 请问怎样执行servlet程序?
- 父bean使用了autowire后,其依赖bean是否也会自动装配?
- 关于webservice的事务控制问题?
还有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>
为什么要每个类都有,传bean ID,写个获取的公共方法不就可以了。推荐 SPRING框架高级编程.PDF Rod Johnson 蒋培[译者] LZ这绝对是一本开发用的好书,正在用。
ApplicationContext cont = new ClassPathXmlApplicationContext("applicationContext.xml");
UserImpl u = (UserImpl) cont.getBean("TblUserBiz");
来创建了
struts不用写
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"spring.xml"});
...
吧
对于单独的应用程序,当然需要手动的将spring配置文件导入了,不过也不需要每个类都加上那一段。
可以写一个工具类的静态方法,一次将文件读到一个静态的变量中,这样就不用每次都去读文件了。