Spring5-7


熟悉spring:
项目结构如下:

spring-study2的pom.xml文件中添加以下依赖:



    org.springframework
    spring-webmvc
    5.3.17




    junit
    junit
    4.13.1
    test

Cat类如下:

package com.kuang.pojo;

public class Cat {
    public void shout(){
        System.out.println("miao~");
    }
}

Dog类如下:

package com.kuang.pojo;

public class Dog {
    public void shout(){
        System.out.println("wang~");
    }
}

People类如下:

package com.kuang.pojo;

public class People {
    private Cat cat;
    private Dog dog;
    private String name;

    public Cat getCat() {
        return cat;
    }

    public Dog getDog() {
        return dog;
    }

    public String getName() {
        return name;
    }

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

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

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

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

MyTest类如下:

import com.kuang.pojo.People;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    @Test
    public void test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        People people = context.getBean("people",People.class);
        people.getCat().shout();
        people.getDog().shout();
    }
}

beans.xml添加如下:





    
    
    

之后可以运行MyTest!
输出如下:

使用注解自动装配:

1.导入约束:context约束
2.配置注解的支持:context:annotation-config【重要!】

<?xml version="1.0" encoding="UTF-8"?>


    
    

    
    
    


在People类做添加@Autowired,也可以删掉此类中的set方法:

@Autowired
使用Autowired我们可以不用编写set方法,前提是你这个自动装配的属性在IOC(Spring)容器中存在,且符合byType!

注解说明

  • @Autowired:自动装配通过类型。名字
    • 如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier(value="xxx")
  • @Nullable:字段标记了这个注解,说明这个字段可以为null
  • @Resource:自动装配通过名字。类型