SpringBoot中的自动装载ImportSelector

ImportSelector

SpringBoot中的自动装载ImportSelector_第1张图片

1).定义Bean对象

@Data
public class User {
    private String userName;
    private Integer age;
}

2).定义配置类Configuration

//定义一个Configuration,这里并没有使用spring注解,spring扫描的时候并不会装载该类
public class UserConfiguration {
    @Bean
    public User getUser(){
        User user = new User();
        user.setUserName("大傻子");
        user.setAge(21);
        return user;
    }
}

3).定义ImportSelector

public class UserImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        //获取配置类的名称
        //自动找到类,然后把类放入容器里面,进而帮助我们创建出对象
        return new String[]{UserConfiguration.class.getName()};
    }
}

4).定义EnableXXX注解,注意,定义该类的时候是 .Annotation

@Retention(RetentionPolicy.RUNTIME)//
@Documented
@Target(ElementType.TYPE)//可以配置到什么地方
@Import(UserImportSelector.class)//自动加载该类
public @interface EnableUserBean {
}

5).测试

@EnableUserBean
public class TestApplication {
    /**
     *   -->EnableUserBean -->UserImportSelector -->UserConfiguration -->User
     */
    public static void main(String[] args) {
        //获取Spring容器
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestApplication.class);
        User bean = ac.getBean(User.class);
        System.out.println(bean);

    }
}

 

 

 

你可能感兴趣的:(java学习)