@ComponentScan自动导入和指定导入

import Test_01.Test02;
import Test_01.Test_03;
import Test_02.Test_05;
(这里要特别注意包是否导进来)
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * Created by XiaoBai on 2019/9/25.
 */
public class Test_ZhuLei {
    public static void main(String[] args) {

        AnnotationConfigApplicationContext ioc = new AnnotationConfigApplicationContext(Test_PeiZh.class);
        ShuXin shuXin = (ShuXin) ioc.getBean("shuXin");
        Test02 test =  ioc.getBean(Test02.class);
        System.out.println(shuXin);
        System.out.println(test);
        Test_03 test_03 = ioc.getBean(Test_03.class);
        System.out.println(test_03);
        //这里是用的(import Test_02.Test_05;)包的类
        Test_05 test05 = ioc.getBean(Test_05.class);
        System.out.println(test05);
    }
}

```配置类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
 * Created by XiaoBai on 2019/9/25.
 */
@Configuration  //告诉Spring这是一个配置类
@ComponentScan( value = {"Test_01","Test_02"})// 组件扫描
public class Test_PeiZh {

//@ComponentScan( value = {"Test_01","Test_02"},excludeFilters = {
//      @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Controller.class, Target.class})
//})
// 自定义组件扫描,就是说不要有{Controller.class, Target.class}的组件
//excludeFilters指定扫描条件

    @Bean   //给容器中注册一个Bean,类型返回值的类型,ID默认是用方法名作为ID;
    public ShuXin shuXin(){
        return new ShuXin("asd",24);
    }

}


组件(就是容器的对象,也就是说容器里的每一个对象也叫组件)
import org.springframework.context.annotation.Configuration;

/**
 * Created by XiaoBai on 2019/9/25.
 */
public class ShuXin {
    private String name;
    private  Integer age;


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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "ShuXin{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public ShuXin(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}


@Scope:代表域。(主要是写在配置类里)
prototype,多实例的。IOC容器启动时并不会去调用方法创建对象放在容器中。而是每次获取的时候才会调用方法从新去创建一个对象。
@Scope(“prototype”)。代表有这个注解的方法是多实例的。不管获取多少次都不一样。()
singleton,单实例的(默认值):IOC容器启动就会调用方法创建对象放在IOC容器中。所以说每次获取就是直接从容器中拿出来的。
@Scope("singleton")。代表有这个注解的方法是单实例的。不管获取多少次都是一样的。(里面的值是一样的)也可以不写singleton。因为@Scope默认的就是单实例。
request,同一次请求创建一个实例。
session,同一个session创建一个实例。

 

你可能感兴趣的:(@ComponentScan自动导入和指定导入)