Spring 自动装配

Bean的自动装配(Autowiring)
四种类型:
1.No:不做任何操作
2.byname:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
3.byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型的bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生
4.Constructor:与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常

Bean的自动装配:在beans标签配置属性 default-autowire="no/byName/byType/constructor"
作用为:省去了在Spring的xml中配置property标签和constructor-arg标签,只需要配置bean标签即可
PS:byName和byType为设值注入,constructor为构造注入;
	byName要求bean标签的id属性需要和成员变量的名称一致,
	byType和constructor则跟id无关

xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"
        default-autowire="constructor">
     <!-- default-autowire="byName" -->

    <bean id="autoWiringService" class="com.daley.springprac.prac1.autowiring.AutoWiringService" />
    <bean id="autoWiringDAO" class="com.daley.springprac.prac1.autowiring.AutoWiringDAO" />
</beans>

演示项目地址:https://github.com/DaleyChao/SpringPractice/commit/de3a447e668236aebd0fcddb1a2272310d58c3e2

时间: 2024-09-20 00:49:02

Spring 自动装配的相关文章

Spring自动装配的学习

在xml配置文件中,autowire有6种类型,可以在<bean/>元素中使用autowire属性指定: 模式 说明 no 不使用自动装配,必须通过ref元素指定依赖,默认设置. byName 根据属性名自动装配.此选项将检查容器并根据名字查找与 属性完全一致的bean,并将其与属性自动装配. byType 如果容器中存在一个与指定属性类型相同的bean,那么将与 该属性自动装配:如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配:如果没有找到相匹配的bean

Spring自动装配不成功,问了好几个人都没有结果,求大神指导!!

问题描述 以下的程序中当明确使用name-ref的时候可以将namebean绑定到personbean上,但是自动装配的时候总是装配不少,实在不明白怎么回事儿:Person1:Person[name=Carose,car=Car[brand=Audi,price=340000.0],address=Address[country=中国,city=北京]]Person2:Person[name=null,car=Car[brand=Audi,price=340000.0],address=Addr

《Spring攻略(第2版)》——1.12 用@Autowired和@Resource自动装配Bean

1.12 用@Autowired和@Resource自动装配Bean 1.12.1 问题 在Bean配置文件中设置autowire属性进行的自动装配将装配一个Bean的所有属性.这样的灵活性不足以仅仅装配特定的属性.而且,你只能通过类型或者名称自动装配Bean.如果这两种策略都不能满足你的需求,就必须明确地装配Bean. 1.12.2 解决方案 从Spring 2.5起,自动装配功能进行了多处改进.你可以通过用@Autowired或者@Resource(在JSR-250:Java平台常见注解中定

spring mvc-Spring自动装配,求大神答疑

问题描述 Spring自动装配,求大神答疑 小弟最近刚学的spring 自动装配有点问题请教: 这个是XML: <?xml version="1.0" encoding="UTF-8"?> < beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quo

spring入门(8) 装配Bean之自动装配

Spring_Autowiring collaborators 在Spring3.2.2中自动装配类型,分别为:no(default)(不采用自动装配). byName,byType,constructor下面来分别介绍一下这些是如何自动装配的 <bean id="foo" class="...Foo" autowire="autowire type"> Mode            Explanation no: (Default

Spring中我们用到的功能实现:基于注解的Ioc自动装配

  我们要完成自动装配,那么就要有一个存放bean对象的容器,然后要有装配的注解,那么哪些类该被存到容器呢,在spring中我们使用过@Service.@Resource等,看下面的代码,你也可以做到.     来看看这是一个简单的容器接口 /**  * 容器接口  * @author:rex  * @create_time:2014-6-26  * @version:V1.0  */ public interface Container { Object getBean(String name

autowired-SpringMVC+Spring Controller自动装配失败

问题描述 SpringMVC+Spring Controller自动装配失败 使用SpringMVC+Hibernate+Spring做demo练习,但是启动时报错,说是Controller里依赖的LoginService无法自动装配. 我自己写了个Main类做测试,Dao和Service都是可以自动装配的,唯独Controller不可以,网上看了好多类似的问题,但是也没有解决我的问题,希望哪位高手能帮我解答下,谢谢. 启动时报错: 严重: StandardWrapper.Throwable o

《Spring攻略(第2版)》——1.11 用XML配置自动装配Bean

1.11 用XML配置自动装配Bean 1.11.1 问题 当一个Bean需要访问另一个Bean时,你可以显式指定引用装配它.但是,如果你的容器能够自动装配Bean,就可以免去手工配置装配的麻烦. 1.11.2 解决方案 Spring IoC容器能够帮助你自动装配Bean.你只要在的autowire属性中指定自动装配模式就可以了.表1-2列出了Spring支持的自动装配模式. *默认模式是no,但是可以设置根元素的default-autowire属性修改.这个默认模式将被Bean自己指定的模式覆

Spring(三)之自动装配、表达式

自动装配 例子 byName byType 将bean排除在自动装配之外 依赖检查 spring表达式 自动装配 自动装配(autowire)协作者 Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系.因此,如果可能的话,可以自动让Spring通过检查BeanFactory中的内容,来替我们指定bean的协作者(其他被依赖的bean). autowire一共有五种类型.由于autowire可以针对单个bean进行设置,因此可以让有些bean使用autowire