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());

    }

    }

  • 相关阅读:
    本地及远程二级缓存
    ubuntu下使用golang、qml与ubuntu sdk开发桌面应用
    TCP之心跳包实现思路
    Java读书笔记1
    回文字符串
    6.1 遍历字符串
    linux系统文件夹的作用 good
    在线程中建立Form遇到的问题
    QTabWidget and QTabBar.的文字的颜色设置,三种方法
    Ring3下Hook NtQueryDirectoryFile隐藏文件
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9354100.html
Copyright © 2011-2022 走看看