Spring 自动装配;方法注入

通过配置defalut—autowire属性,Spring IOC容器可以自动为程序注入Bean;默认是no(不启用自动装配)。

default—autowire的类型有:

byName:通过名称自动进行匹配

byType:通过属性自动进行匹配

示例如下:

一个实体类people 

复制代码
public class People{

    private int id;
    private String name;
    private int age;
    private Dog dog;
}
复制代码

beans.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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" 
        default-autowire="byName">
        <!-- byName通过属性名,byType通过类型只要类型与属性类型相同就可以自动装配 -->
        
    <bean id="dog" class="com.maya.model.Dog">
        <property name="name" value="jack"></property>    
    </bean>
    <bean id="dog1" class="com.maya.model.Dog">
        <property name="name" value="tom"></property>    
    </bean>
    <!-- 在这里不需要,手动进行注入bean,因为people中的属性名是dog,那么它会自动装配id是dog的类 -->
    <bean id="people1" class="com.maya.model.People">
        <property name="id" value="1"></property>
        <property name="name" value="小明"></property>
        <property name="age" value="15"></property>        
    </bean>              
</beans>
复制代码

建议:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误;

方法注入:

Spring 管理的bean的作用域默认是单例的singleton; 但是可以通过配置prototype,实现多例;

那么就需要用到方法注入:lookup-method

如果我想让Spring管理的bean在我每次调用的时候都是新的,那么就需要如下配置(但是这样做的前提条件是:我没有手动将这条狗注入到people中)

<bean id="dog" class="com.maya.model.Dog" scope="prototype"><!-- 将scope属性设置为prototype -->
        <property name="name" value="jack"></property>
</bean>

如果将dog手动注入到了people中的话,这样做是无法改变其单例的模式,依然会是同一条狗

转载于:https://www.cnblogs.com/hq233/p/6664744.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值