开发者社区> meijm0103> 正文

Spring Boot 动态注入的两种方式

简介: 通过@Profile+spring.profiles.active spring.profiles.active:官方解释是激活不同环境下的配置文件,但是实际测试发现没有对应的配置文件也是可以正常执行的。
+关注继续查看

通过@Profile+spring.profiles.active

spring.profiles.active:官方解释是激活不同环境下的配置文件,但是实际测试发现没有对应的配置文件也是可以正常执行的。那就可以把这个key当作一个参数来使用
@Profile:spring.profiles.active中激活某配置则在spring中托管这个bean,配合@Component,@Service、@Controller、@Repository等使用

@Component
@Profile("xx")
public class XxxTest extends BaseTest {
    public void test(){
        System.out.println("in XxxTest ");
    }
}
@Component
@Profile("yy")
public class YyyTest extends BaseTest {
    public void test(){
        System.out.println("in YyyTest ");
    }
}

@Service
public class MyService  {

 @Autowired
 private BaseTest  test;

    public void printConsole(){
        test.test();
    }
}

//配置文件激活某个环境则test就会注入哪个bean
spring.profiles.active=xx

通过@Configuration+@ConditionalOnProperty

@Configuration:相当于原有的spring.xml,用于配置spring
@ConditionalOnProperty:依据激活的配置文件中的某个值判断是否托管某个bean,org.springframework.boot.autoconfigure.condition包中包含很多种注解,可以视情况选择

@Configuration
public static class ContextConfig {
@Autowired
private XxxTest xxTest;
@Autowired
private YyyTest yyTest;

@Bean
@ConditionalOnProperty(value = "myTest",havingValue = "xx")
 public BaseTest  xxxTest() {
  return xxTest;
 }

 @Bean
@ConditionalOnProperty(value = "myTest",havingValue = "yy")
 public BaseTest yyyTest() {
  return yyTest;
 }
//配置文件中控制激活哪个bean
myTest=xx
}

参考资料

https://blog.csdn.net/wild46cat/article/details/71189858
https://www.javacodegeeks.com/2013/10/spring-4-conditional.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
spring注解方式 idea报could not autowire,eclipse却没有问题
解决办法1: 从根本上解决: File-Project Structure 页面 Facets下删掉 Spring(直接右键Delete)   这个解答是对的。并不会降低安全性!!因为创建项目的时候,都是先创建空项目再创建web moduele(你想直接创建web project也可以),一般不会使用spring组件。
1148 0
Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别
Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。
570 0
Spring整合的quartz任务调度的实现方式
一、在web.xml中将配置文件的位置指定好。 Web.xml的配置如下: <?xmlversion="1.0"encoding="UTF-8"?> <web-appversion="2.5"       xmlns="http://java.sun.com/xml/ns/javaee"       xmlns:xsi="http://www.w3.org/20
1124 0
Spring Boot实现定时任务的4种方式
Spring Boot实现定时任务的4种方式
69 0
springAOP的实现方式
基于上篇介绍玩AOP的相关概念以及通知类型,我们继续了解AOP的几种使用方法. 经典的基于代理的AOP @AspectJ注解驱动的切面 纯POJO切面(纯粹通过aop:fonfig标签配置) 注入式AspectJ切面
25 0
Spring Bean初始化的几种常规方式
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 通过构造方法实例化 通过静态工厂实例化 通过实例工厂实例化 通过FactoryBean实例化 RumenzA实体类 package com.
302 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29202 0
+关注
meijm0103
知其然,知其所以然
62
文章
6
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载