- 浏览: 164675 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (116)
- 随笔 (2)
- spring (24)
- struts (1)
- hibernate (6)
- log4j (0)
- mysql (14)
- oracle (0)
- ext (0)
- jQuery (0)
- HTML+CSS (2)
- Javascript (1)
- 其它杂碎 (0)
- IT (3)
- J2EE综合 (15)
- SQLServer (1)
- 好文章URL 待阅读 (3)
- 编辑器 (2)
- 版本控制 (5)
- Tomcat (4)
- DoJo (0)
- Ubuntu (11)
- Hadoop (3)
- cxf (3)
- maven (6)
- CI (5)
- H2 (1)
- JVM (1)
- FirefoxOS (1)
- Jboss (1)
- 操作系统 (1)
- C3P0 (2)
- Quartz (1)
- maps (10)
- 设计模式 (5)
最新评论
-
yogurt2012:
请问··我如果要调试H2数据库来分析其JOIN算法应该怎么做呢 ...
H2笔记 -
carlosfu:
很好很全,很有收获
Spring3笔记之 JDBC -
ponlya:
coldrush 写道看了你的配置 ,刚绝 file:后加绝对 ...
添加使用dtd文件 -
ponlya:
byp19980911 写道这不是很好的解决办法,最好是使用连 ...
java.net.SocketException:Software caused connection abort: socket write error -
ponlya:
ayanami001 写道为什么spring没有封装分页吗,那 ...
Spring3笔记之 JDBC(分页)
Autowiring collaborators 自动装配
Spring通过检查BeanFactory中的内容,来替指定其他被依赖的bean
优点:
1、显著减少配置的数量
2、以使配置与java代码同步更新
XML配置过程中可在<bean>标签中指定autowire属性,它有5个值(3中官方英文文档中只有前4个):
no :No autowiring,bean之间的关系必须通过ref标签来指定
byName :根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。
byType :如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。
constructor :与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
@deprecated,autowire="autodetect"这个在spring2.5文档中还有见,但是在3中已经没了,3中的XML配置中添加些值会报错。
autodetect :通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
但是在spring3的xsd文件中找到default这个值项,应该是替代autodetect 的吧:
spring3.0Xsd 文件中
default-autowire的属性只有no ,byName ,byType ,byType 这里既没有autodetect 也没有default
default-autowire-candidates 中值的设置解释:
A default bean name pattern for identifying autowire candidates:
e.g. "*Service", "data*", "*Service*", "data*Service".
Also accepts a comma-separated list of patterns: e.g. "*Service,*Dao".
See the documentation for the 'autowire-candidate' attribute of the
'<bean/>' element for the semantic details of autowire candidate beans.
但是,我测试了下,发现并没有作用?搜到一外文网页上说如同上写法,但是那是07年的帖子了。是不是spring3中这个配置没了作用?
/*
dependency-check依赖检查:自动装配中:autowire-candidate属性设为false,这样容器在查找自动装配对象时将不考虑该bean。
(这块在spring3中已经移除了?文档中没有找到)
依赖检查也可以针对每一个bean进行设置。依赖检查默认为not,它有几种不同的使用模式,在xml配置文件中,可以在bean定义中为dependency-check属性使用以下几种值:
none: 没有依赖检查,如果bean的属性没有值的话可以不用设置。
simple: 对于原始类型及集合(除其他被依赖的bean外的一切东西)执行依赖检查
object: 仅对其他被依赖的bean执行依赖检查
all: 对其他被依赖的bean,原始类型及集合执行依赖检查
也找不到:default-dependency-check
*/
将bean排除在自动装配之外
一、当采用XML格式配置bean时,<bean/>元素的 autowire-candidate属性可被设为false,这样容器在查找自动装配对象时将不考虑该bean。
二、使用对bean名字进行模式匹配来对自动装配进行限制。其做法是在<beans/>元素的'default-autowire-candidates'属性中进行设置。比如,将自动装配限制在名字以'Repository'结尾的bean,那么可以设置为"*Repository“。对于多个匹配模式则可以使用逗号进行分隔。注意,如果在bean定义中的'autowire-candidate'属性显式的设置为'true' 或 'false',那么该容器在自动装配的时候优先采用该属性的设置,而模式匹配将不起作用。
<!--EndFragment-->
测试代码:
com.spring305.test.autowire.po.IdCard.java
public class IdCard { private String cardNo; private String desc; 。。。getter .setter }
com.spring305.test.autowire.po.People.java
public class People { private int id; private String name; private IdCard idCard; public People(){ } //autowire="constructor" 要有此构造方法 public People(IdCard idCard){ this.idCard = idCard; } getter setter }
src/testAutoWire.xml
<beans.... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd " default-autowire-candidates="*idCard" > <!-- default-autowire-candidates="*ple*,*ard*" 配置了,但是没有感觉到作用,并没有限制相应的 --> <!--beans标签中加上: default-autowire="default" or default-autowire="byName" (后面的是延迟加载,就不是了)default-lazy-init="true" --> <bean id="idCard" class="com.spring305.test.autowire.po.IdCard"></bean> <bean id="people" class="com.spring305.test.autowire.po.People" autowire="byName"></bean> <!-- dependency-check="object" 这个在spring3中貌似没了 单个autowire <bean id="people" class="com.spring305.test.autowire.po.People" autowire="byName"></bean> <bean id="people" class="com.spring305.test.autowire.po.People" autowire="constructor"></bean> autowire-candidate="false" 不会自动注入到其它的bean中 <bean id="idCard" class="com.spring305.test.autowire.po.IdCard" autowire-candidate="false"></bean> -->
测试:
//@Test//xml public void AutoWireTestXML() { ApplicationContext context = new ClassPathXmlApplicationContext("testAutoWire.xml"); People people = (People) context.getBean("people"); IdCard idCard = people.getIdCard(); // autowire="byName" 当people bean上没有加这个标签时,打印值为null,加后则打印出了对象 System.out.println(idCard); }
annotation测试:
com.spring305.test.autowire.po.IdCardAnnotation.java
@Configuration public class IdCardAnnotation { private String cardNo; private String desc; 。。。。getter...setter }
com.spring305.test.autowire.po.PeopleAnnotation.java
@Configuration public class PeopleAnnotation { private int id; private String name; private IdCardAnnotation idCardAnnotation; @Autowired(required = false) //@Qualifier("idCardAnnotation") public void setIdCardAnnotation(@Qualifier("idCardAnnotation")IdCardAnnotation idCardAnnotation) { this.idCardAnnotation = idCardAnnotation; } getter.setter }
测试:
@Test public void AutoWireTestAnnotation() { ApplicationContext context = new AnnotationConfigApplicationContext(IdCardAnnotation.class,PeopleAnnotation.class); PeopleAnnotation people = (PeopleAnnotation) context.getBean("peopleAnnotation"); IdCardAnnotation idCard = people.getIdCardAnnotation(); System.out.println(idCard); }
发表评论
-
Spring整合Hibernate(摘录)
2011-05-07 09:48 742简要步骤From:http://blog.csdn.net/s ... -
Spring3笔记之 JDBC(分页)
2011-04-25 22:08 2017接上篇的实体,DAO接口,实现,测试及XML http://p ... -
Spring3笔记之 JDBC
2011-04-25 22:02 7813使用Spring 的JDBC 先创建表: DROP TAB ... -
Spring3笔记之 事务传播
2011-04-24 15:51 1211摘自:http://zhxing.iteye.com/blog ... -
Spring3笔记之 AOP
2011-04-24 14:24 1902Spring AOP部分使用JDK动态代理或者CGLIB来为目 ... -
Spring3笔记之 AOP Cglib 代理
2011-04-24 14:13 1356JDK的Proxy实现代理要求 ... -
Spring3笔记之 AOP JDK 代理
2011-04-24 14:09 1053使用JDK代理,代理对象必须实现一接口 com.spring ... -
Spring3之 Resource
2011-04-21 22:49 3977主要是org.springframework.core.io. ... -
Spring3之 bean 注解
2011-04-20 22:18 1503小记下,spring注解相关: com.spring305. ... -
Spring3之 bean 定制bean特性
2011-04-19 21:10 1294Customizing the nature of a bea ... -
Spring3之 bean 作用域scope
2011-04-18 22:21 1460Bean scopes 作用域 5个:singleton,p ... -
Spring3之 bean Method injection
2011-04-17 20:04 1460Method injection(方法注入) bean都是s ... -
Spring3之 bean depends-on
2011-04-17 08:56 3273depends-on depend-on用来表 ... -
Spring3之 bean Lazy-initialized beans
2011-04-17 08:48 1971Lazy-initialized beans延迟 ... -
Spring3之 集合对象属性注入
2011-04-16 23:17 1211com.spring305.test.beanInit.cpo ... -
Spring3之 bean idref?
2011-04-16 18:39 966很是奇怪idref是干什么 ... -
Spring3之 bean简单属性注入
2011-04-16 17:40 1366DI (依赖注入)有二种: Constructor-based ... -
Spring3之 实例化bean2
2011-04-16 14:30 1016Spring3之 bean命名(http://ponlya.i ... -
Spring3之 bean命名
2011-04-16 11:36 2010一、bean的命名采用标准Java命名约定:小写字母开头,首字 ... -
Spring3之 IoC容器的实例化
2011-04-16 08:39 1517Bean:在Spring中,那些组成你应用程序的主体(ba ...
相关推荐
本篇将详细探讨"3Spring使用annotation方式autowire"这一主题,包括注解驱动的自动装配(Autowiring)以及相关的源码分析。 ### 一、注解驱动的自动装配 自动装配是Spring框架的一个核心特性,它允许框架自动管理...
Spring实战之@Autowire注解用法详解 Spring是一个流行的Java框架,提供了许多有用的功能和注解来简化开发过程。@Autowire是Spring框架中一个非常重要的注解,用于自动装配Bean。下面将详细介绍@Autowire注解的用法...
其中,Spring的自动装配特性(Autowired)是其核心特性之一,极大地简化了依赖注入的过程。本篇文章将通过在IDEA 2020环境下构建的Spring 5小实例,深入解析Spring的@Autowired注解,帮助读者理解和掌握这一关键知识...
在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件或注解来定义、配置和管理Beans。下面将深入探讨`<beans>`、`<bean>`及其属性,以及其他相关的配置元素。 ...
在Spring框架中,自动装配(Autowiring)是一种强大的特性,它允许我们无需显式配置bean之间的依赖关系,Spring会自动地将bean的依赖注入到它们的实例中。本示例"spring-autowire-demo.zip"是基于Spring 5.3.6版本,...
在Spring框架中,Bean配置是核心概念之一,它关乎到对象的创建、初始化、装配以及管理。本节我们将深入探讨Spring中的Bean配置,主要聚焦在XML配置方式,因为这是Spring早期版本中最常用的方式,尽管在现代Spring...
在Spring框架中,Bean是核心概念之一,它们代表了应用程序中的对象,负责执行特定的功能。Spring作为一个依赖注入(DI)和面向切面编程(AOP)的容器,它管理Bean的生命周期并处理Bean之间的依赖关系。本文将深入...
在Spring框架中,Bean装配是核心功能之一,它负责初始化、配置和管理应用程序中的对象。本文将深入探讨Spring装配Bean的实例代码,帮助你更好地理解这一关键概念。 首先,Spring装配Bean主要有两种方式:XML配置和...
### Spring的Bean配置详解 #### 一、Spring配置文件根元素`<beans>`解析 - **功能概述**:`<beans>`是Spring配置文件的根元素,用来包含一个或多个`<bean>`元素,用于定义Spring容器管理的各种Bean。 #### 二、`...
在Spring框架中,配置Bean是核心功能之一,它允许开发者声明、管理和注入应用程序中的对象。Spring使用XML配置文件来描述这些Bean及其依赖关系。以下是对Spring Bean配置的详细解释: 1. `<beans>` 根元素:这是...
在文件"1606SpringDay02-3"中,可能包含了对这些概念的详细讲解和示例代码,通过学习这部分内容,我们可以更深入地理解Spring如何管理和装配bean,从而更好地设计和构建Spring应用。同时,合理使用`parent`、`...
默认情况下,配置文件中需要通过ref装配Bean,但设置了autowire="byName",Spring会在配置文件中自动寻找与属性名字personDao相同的bean,找到后,通过调用setPersonDao(PersonDao personDao)方法将id为personDao的...
<bean id="address" class="com.gong.spring.beans.autowire.Address" p:city="武汉" p:street="络南街道"></bean> <bean id="address2" class="com.gong.spring.beans.autowire.Address" parent="address" p:...
以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及...
3. 解决方案二:写个获取spring bean的帮助类,实现ApplicationContextAware接口。 4. 使用帮助类可以在任何地方获取到对应的bean。 5. 在帮助类中,需要实现setApplicationContext方法,以便在容器启动时将...
`autowire`是Spring框架的核心特性之一,用于自动管理bean之间的依赖关系。它允许Spring容器自动识别并注入bean所需的合作对象,而无需显式配置。这减少了XML配置文件的复杂性,并提高了代码的可维护性。 ### 2. `...
3. **基于名称的自动装配(By Name Auto-Wiring)**:Spring会查找与目标bean的属性名相同的bean并注入。在XML配置中,可以使用`autowire="byName"`开启此功能。 4. **基于注解的自动装配(Annotation-Based Auto-...
使用 `<bean>` 元素的 `autowire` 属性可以指定自动装配的类型。 五、方法注入 方法注入是依赖注入的一种方式,它要求 Bean 的方法返回一个实例对象。Spring 将根据配置文件中的 `<bean>` 元素来实例化对象,并...