zoukankan      html  css  js  c++  java
  • Spring(四)Spring之自动装配(autowire)

    什么是自动装配?

    spring IOC容器可以自动装配(autowire)相互协作bean之间的关联关系。因此,如果可能的话,可以自
    动让Spring通过检查BeanFactory中的内容,来替我们指定bean的协作者(其他被依赖的bean)。由于
    autowire可以针对单个bean进行设置,因此可以让有些bean使用autowire,有些bean不采用。autowire的
    方便之处在减少或者消除属性或构造器参数的设置,这样可以给我们的配置文件减减肥


    在配置文件中给域属性注入值时除了使用
    <property name="car" ref="car"></property>

    (外面的bean节点我没有写,在前面已经有写过,在这里简单提一下)

    还有一种方法就是域属性自动装配设置bean节点中的autowire属性来给他注入值

    下面用个例子来说一下

    首先是准备工作

    先创建两个类Student和Car,类中的内容如下

    package demo06;
    
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.Resource;
    
    /**
     * Created by mycom on 2018/3/5.
     */
    public class Student {
        private String name;
        private Integer age;
        private Car car;
    
        public Student() {
        }
    
        public Student(String name, Integer age) {
    
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Car getCar() {
            return car;
        }
    
        public void setCar(Car car) {
            this.car = car;
        }
    }
    package demo06;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    /**
     * Created by mycom on 2018/3/5.
     */
    public class Car {
        private String color;
        private String brand;
    
        public String getBrand() {
            return brand;
        }
    
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        public String getColor() {
    
            return color;
        }
    
        public void setColor(String color) {
            this.color = color;
        }
    }

    在配置文件中进行配置

    <?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:aop="http://www.springframework.org/schema/aop"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
            <bean id="car" class="demo06.Car">
                <property name="color" value="红色"></property>
                <property name="brand" value="布加迪"></property>
            </bean>
            <bean id="littleCar" class="demo06.LittleCar">
                <property name="color" value="红色"></property>
                <property name="brand" value="布加迪"></property>
            </bean>
            <bean id="student" class="demo06.Student" autowire="byName">
                <property name="name" value="小明"></property>
                <property name="age" value="12"></property>
            </bean>
    </beans>

    在这里说明一下:

    autowire的值有两个 byName和byType 

    byName就是根据Spring管理的Car的id值来进行属性注入

    byType 就是根据Spring管理的Car的类型注入,所以这种注入方式有两种

  • 相关阅读:
    #研发解决方案介绍#基于持久化配置中心的业务降级
    #研发解决方案介绍#Tracing(鹰眼)
    #研发解决方案介绍#Recsys-Evaluate(推荐评测)
    穷追不舍、事故入手和倒逼
    职场的真相——七句话
    被小伙伴们吓哭了:可怕的命令
    适用于研发基层员工的十个行为模式
    研发阿米巴组织的运行逻辑
    技术总监是干什么的?
    大学教给了我们什么(二)
  • 原文地址:https://www.cnblogs.com/my-123/p/8521735.html
Copyright © 2011-2022 走看看