所谓自动装配,即让 Spring 自动管理 Bean 与 Bean 之间的依赖关系,无须使用 ref 显式指定依赖 Bean 。Spring 容器会自动检查 XML 配置文件的内容,为主调 Bean 注入依赖 Bean 。自动装配可以减少配置文件的工作量,但会降低依赖关系的透明性和清晰性。
通过使用自动装配,可以让 Spring 插件自动将业务逻辑组件注入 Struts2 的 Action 实例中。
<?xml version="1.0" encoding="GBK"?> <!-- 指定Struts2配置文件的DTD信息 --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <!-- Struts2配置文件的根元素 --> <struts> <!-- 配置了系列常量 --> <constant name="struts.custom.i18n.resources" value="messageResource"/> <constant name="struts.i18n.encoding" value="GBK"/> <package name="lee" extends="struts-default"> <!-- 定义处理用户请求的Action,指定该Action的实现类--> <action name="login" class="lee.LoginAction"> <!-- 为两个逻辑视图配置视图页面 --> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> <!-- 让用户直接访问该应用时列出所有视图页面 --> <action name=""> <result>.</result> </action> </package> </struts>
些时 Struts2 配置文件里配置的依然是该 Action 的实现类,该配置文件与不整合 Spring 时的配置文件没有任何区别。
注意:整合 Spring 框架与不整合时的区别并不是在这个配置文件中体现,而是在创建该 Action 实例时体现出来的。如果不整合 Spring 框架,则 Struts2 框架负责创建 Action 实例,创建成功后就结束了;如果整合 Spring 框架,则当 Action 实例创建完成后,Spring 插件还会负责将该 Action 所需的业务逻辑组件注入给该 Action 实例。
查看刚才的 Action 代码,发现了如下方法定义:
//系统所用的业务逻辑组件 private MyService ms; //设置注入业务逻辑组件所必需的setter方法 public void setMs(MyService ms) { this.ms = ms; }
通过上面的 setter 方法,可以看出该 Action 所需的业务逻辑组件名为 ms ,因此我们必须在配置业务逻辑组件时,指定其 id 属性为 ms 。本示例应用的 applicationContext.xml 文件代码如下:
<?xml version="1.0" encoding="GBK"?> <!-- 指定Spring配置文件的DTD信息 --> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <!-- Spring配置文件的根元素 --> <beans> <!-- 配置一个业务逻辑组件,实现类为lee.MyServiceImp --> <bean id="ms" class="lee.MyServiceImpl"/> </beans>
因为在配置业务逻辑组件时,指定了该业务逻辑组件的 id 为 ms ,则 Spring 插件可以在创建 Action 实例时将该业务逻辑组件注入给 Action 实例。
在这种整合策略下,Spring 插件负责为 Action 自动装配业务逻辑组件,从而可以简化配置文件的配置。这种方式也存在如下两个缺点:
- Action 与业务逻辑组件的耦合降低了代码层次,必须在配置文件中配置 Action 所需控制器同名的业务逻辑组件。这不利于高层次解耦。
- Action 接受 Spring 容器的自动装配,代码的可读性较差。
相关推荐
ean的自动装配,有4种 (1)no:不做任何操作 (2)byName:根据属性 名 自动装配,设值注入 <bean id="xxx" class="xxx" ></bean> (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 ...
spring自动装配项目struts2,使用了struts2 ,spring2.5 ,hibernate,和spring 自动装配
Spring自动装配解析,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/44836069
Spring自动装配的方式和举例、以及@Qualifier、@Autowire、@Resource的使用。
Spring 自动装配及其注解 博客:https://blog.csdn.net/u010476739/article/details/76735241
本项目为Java项目,使用Spring实现自动装配,根据类型方式实现自动装配。适合初学者了解Spring不同装配方式。
Spring自动装配@Qualifier实例
NULL 博文链接:https://cdxs2.iteye.com/blog/1941095
主要为大家详细介绍了Java注解机制之Spring自动装配实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
NULL 博文链接:https://garrincha.iteye.com/blog/2109688
Spring中的自动装配有哪些限制?.docx Spring中的自动装配有哪些限制?.docx Spring中的自动装配有哪些限制?.docx
我知道大家有些学的自动转配模式不清楚,所以我传了一个自动转配的模式表
主要介绍了Spring 自动装配的二义性实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring的自动装配
主要介绍了Spring自动装配Bean实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了spring 自动装配和aop的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Spring自动装配与扫描注解代码详解,具有一定借鉴价值,需要的朋友可以参考下。
今天小编就为大家分享一篇关于Spring中自动装配的4种方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
基于java实现的类似spring自动装配的代码。
主要介绍了JSP Spring 自动化装配Bean实例详解的相关资料,需要的朋友可以参考下