三土土三

导航

Spring中bean的自动装配

·自动装配是Spring满足bean依赖的一种方式。

·Spring会在上下文中自动寻找,并自动给bean装配属性。

在Spring中有三种装配的方式

1.在xml中显示的配置。

2.在java中显示的配置。

3.隐式的自动装配bean【重要】。

7.1.测试

环境搭建:创建三个实体类,Person,Dog,Cat

public class Dog {
   public void shut(){
       System.out.println("wang~");
  }
}
public class Cat {
   public void shut(){
       System.out.println("miao~");
  }
}
public class Person {
   private Cat cat;
   private Dog dog;
   private String name;

   public Cat getCat() {
       return cat;
  }

   public void setCat(Cat cat) {
       this.cat = cat;
  }

   public Dog getDog() {
       return dog;
  }

   public void setDog(Dog dog) {
       this.dog = dog;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   @Override
   public String toString() {
       return "Person{" +
               "cat=" + cat +
               ", dog=" + dog +
               ", name='" + name + '\'' +
               '}';
  }
}

编写测试类

public class MyTest {
   public static void main(String[] args) {
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
       Person person = context.getBean("person", Person.class);
       person.getDog().shut();
       person.getCat().shut();
  }
}

7.2.byName自动装配

<!--byName会自动在上下文中查找和自己对象set方法的值对应的beanid-->
<bean id="person" class="com.yf.pojo.Person" autowire="byName">
       <property name="name" value="袁方"></property>
   </bean>

7.3.byType自动装配

<!--byName会自动在上下文中查找和自己对象属性类型相同的beanid-->
   <bean id="person" class="com.yf.pojo.Person" autowire="byType">
       <property name="name" value="袁方"></property>
   </bean>

7.4.使用注解自动装配

1.导入约束:

context约束

2.配置注解的支持:

context:annotation-config/

<?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
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
       <bean id="dog" class="com.yf.pojo.Dog"/>
       <bean id="cat" class="com.yf.pojo.Cat"/>
       <!--byName会自动在上下文中查找和自己对象set方法的值对应的beanid-->
       <!--byName会自动在上下文中查找和自己对象属性类型相同的beanid-->
       <bean id="person" class="com.yf.pojo.Person">
       </bean>
       <context:annotation-config/>

   </beans>
@Autowired

直接在属性上使用,也可以在set方法上使用。

public class Person {
   @Autowired
   private Cat cat;
   @Autowired
   private Dog dog;
   private String name;

使用注解可省略set方法,前提是自动装配的属性在spring容器中存在。

posted on 2021-03-28 12:55  弓长三土  阅读(101)  评论(0编辑  收藏  举报