• ________________初学springboot8


    @Enable注解原理(视频09)

    4个

    使用@import()将Javabean导入Spring容器中

    @SpringBootApplication

    @ComponentScan

    @Async//异步处理。bean 类之上

    //@EnableAsync使异步处理生效

    //@Import({User.class,Role.class,MyConfiguration.class})//可以导入一个类,或者多个类

    @Import({MyImportSelector.class})//使用importSelector的实现类进行设置,引入实现类对bean进行装配

    importSelector的返回值必须是一个类的全程,该类会被Spring容器所托管

    public class App {

    public static void main(String[] args) {

    ConfigurableApplicationContext context=SpringApplication.run(App.class, args);

    System.out.println(context.getBean(User.class));

    System.out.println(context.getBean(Role.class));

    //System.out.println(context.getBeansOfType(Runnable.class));

    context.close();

    }

    }

    public class MyImportSelector  implements ImportSelector{

    @Override

    public String[] selectImports(AnnotationMetadata importingClassMetadata) {

    // TODO Auto-generated method stub

    return new String[] {

    "com.lsq.springboot.User",

    "com.lsq.springboot.Role"

    };

    }

    }

     可以通过importSelector的实现类,拿到注解的值,对拿到的值进行处理

    两个需要注意的接口

    ImportSelector //自动转入  ImportBeanDefinitionRegistrar//手动自己注入

    public class MyImportSelector  implements ImportSelector{

    @Override

    public String[] selectImports(AnnotationMetadata importingClassMetadata) {

    System.out.println(importingClassMetadata.getAnnotationAttributes(EnableLog.class.getName())

    +"真的好无语");

    return new String[] { 

    "com.lsq.springboot.User",

    "com.lsq.springboot.Role"

    };

    }

    }

    public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    @Override

    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

    BeanDefinitionBuilder bdb=BeanDefinitionBuilder.rootBeanDefinition(User.class);

    BeanDefinition beanDefinition = bdb.getBeanDefinition();

    registry.registerBeanDefinition("user", beanDefinition);

    BeanDefinitionBuilder bdb2= BeanDefinitionBuilder.rootBeanDefinition(Role.class);

    registry.registerBeanDefinition("role", bdb2.getBeanDefinition());

    BeanDefinitionBuilder bdb3= BeanDefinitionBuilder.rootBeanDefinition(MyConfiguration.class);

    registry.registerBeanDefinition(MyConfiguration.class.getName(), bdb3.getBeanDefinition());

    }

    }

  • 相关阅读:
    dockerfile构建的镜像中文乱码
    xshell+xmanager6破解
    mysql数据库本地登录无法查看到数据库
    Tomcat日志中文乱码问题解决
    Tomcat 启动很慢
    Supervisor-安装
    supervisor-monitor进程集中管理部署
    CeSi 进程集中管理部署
    [IOT]
    [SourceTree]
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9354100.html
Copyright © 2020-2023  润新知