zoukankan      html  css  js  c++  java
  • spring-boot autoConfiguration

    一, 第一个待注入类

    public class CacheService {
    }
    
    public class LoggerService {
    }
    

      

    方法一, 实现接口ImportSelectort

    public class CacheImportSelector implements ImportSelector {
        @Override
        public String[] selectImports(AnnotationMetadata annotationMetadata) {
            return new String[]{CacheService.class.getName()};
        }
    }

    方法二, 实现接口ImportBeanDefinitionRegistrar,

    public class LoggerServiceSelector implements ImportBeanDefinitionRegistrar {
        @Override
        public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
            RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(LoggerService.class);
            String strBeanname = StringUtils.uncapitalize(LoggerService.class.getName());
            beanDefinitionRegistry.registerBeanDefinition(strBeanname, rootBeanDefinition);
        }
    }

    自定义Enable注解, 将CacheService, LoggerService加载到Spring-boot项目中

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    @Import({CacheImportSelector.class, LoggerServiceSelector.class})
    public @interface EnableCacheService {
    }
    
    
    
    //启动Spring-boot
    
    @EnableCacheService
    @SpringBootApplication
    public class SpringBootDemoApplication {
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(SpringBootDemoApplication.class, args);
            CacheService cacheService = context.getBean(CacheService.class);
            System.out.println(cacheService.toString());
            LoggerService loggerService = context.getBean(LoggerService.class);
            System.out.println(loggerService);
        }
    }
  • 相关阅读:
    python---基础部分
    自动化测试---Selenium IDE安装及操作
    自动化测试---Selenium IDE概念
    自动化测试----概念
    jmeter---后端监听器
    jmeter---分布式测试
    jmeter---runtime控制器
    什么是 MyBatis 的接口绑定,有什么好处?
    接口绑定有几种实现方式,分别是怎么实现的?
    Apache Shiro 的三大核心组件
  • 原文地址:https://www.cnblogs.com/snow-man/p/11158743.html
Copyright © 2011-2022 走看看