springBoot----@ConditionalOnxxx相关注解总结

更新时间:2023-06-15 20:36:48 阅读: 评论:0

springBoot----@ConditionalOnxxx相关注解总结
下⾯来介绍如何使⽤@Condition
[html]
1. public class TestCondition implements Condition
2. {
3.    /**
4.      * 只有返回true,才会启⽤配置
5.      */
6.    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata)
7.    {
四级作文万能句子8.        return true;
9.    }
10. }
@Conditional(TestCondition.class)
这句代码可以标注在类上⾯,表⽰该类下⾯的所有@Bean都会启⽤配置,也可以标注在⽅法上⾯,只是对该⽅法启⽤配置。
框架还提供了很多@Condition给我们⽤,当然总结⽤语哪种好理解,看给位读者喽
@ConditionalOnBean(仅仅在当前上下⽂中存在某个对象时,才会实例化⼀个Bean)
@ConditionalOnClass(某个class位于类路径上,才会实例化⼀个Bean)
@ConditionalOnExpression(当表达式为true的时候,才会实例化⼀个Bean)
@ConditionalOnMissingBean(仅仅在当前上下⽂中不存在某个对象时,才会实例化⼀个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化⼀个Bean)
@ConditionalOnNotWebApplication(不是web应⽤)
后续会继续补充
另⼀种总结
@ConditionalOnClass:该注解的参数对应的类必须存在,否则不解析该注解修饰的配置类;
@ConditionalOnMissingBean:该注解表⽰,如果存在它修饰的类的bean,则不需要再创建这个bean;可以给该注解传⼊参数例如@ConditionOnMissingBean(name = "example"),这个表⽰如果name为“example”的bean存在,这该注解修饰的代码块不执⾏。
接上⽂
condition⾃定义声明
public class InitConditional implements Condition{
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
/
/判断是否已经包含了amazonTest Bean
Boolean bol =  BeanFactory().containsBean("amazonTest");
return bol;
}
}
使⽤⾃定义的Conditional
@Component
@Conditional(InitConditional.class)
public class AmazonTest {norman mailer
@Autowired
private AmazonProperties amazonProperties;
public void testGet(){
System.out.println("    testGet Associated");
System.out.AssociateId());
}
}
subject>refreshmentWelcomeController 与 AmazonTest关联,使⽤ConditionOnBean(如果条件的bean存在,当前的bean才会被声明)@Component
@ConditionalOnBean(AmazonTest.class)
public class WelcomeController {adenovirus
private static final Logger logger = Logger(WelcomeController.class);
hnieprivate AppProperties app;
外教一对一授课
英语短句private GlobalProperties global;
@Autowired
public void tApp(AppProperties app) {
this.app = app;
}
@Autowired
public void tGlobal(GlobalProperties global) {
this.global = global;
}
public void testWelcome(){
String appProperties = String();
考研真题下载String globalProperties = String();
System.out.println(appProperties);
System.out.println(globalProperties);
}
}
main测试⽂件⼊⼝
public static void main(String[] args) {
ConfigurableApplicationContext configurableApplicationContext =SpringApplication.run(DemoApplication.class, args);
//bean⾃动注册,根据bean的名字获取Bean
AmazonProperties amazonProperties = (AmazonProperties) Bean("amazonProperties");
System.out.AssociateId());
inches
Boolean aBooleanWelcomeController = ainsBean("welcomeController");
if(!aBooleanWelcomeController){
System.out.println("        welcomeController init fail");
}el{
WelcomeController welcomeController = (WelcomeController) Bean("welcomeController");
System.out.println("        welcomeController init Success");
}
Boolean    aBooleanAmazonTest = ainsBeanDefinition("amazonTest");
if(!aBooleanAmazonTest){
System.out.println("        amazonTest init fail");
}el{
AmazonTest amazonTest = (AmazonTest) Bean("amazonTest");
System.out.println("        amazonTest init Success");
}
}

本文发布于:2023-06-15 20:36:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/146266.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:注解   存在   修饰   时候
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图