zoukankan      html  css  js  c++  java
  • ________________初学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());

    }

    }

  • 相关阅读:
    c# 虚拟路径转换为绝对路径
    Java基础——封装
    作为测试人,如何优雅的查看Log日志?
    学习整理
    记一次DataNode慢启动问题
    记一次DataNode慢启动问题
    记一次DataNode慢启动问题
    DataNode迁移方案
    C++学习笔记-模板
    C Primer Plus之指针
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9354100.html
Copyright © 2011-2022 走看看