当前位置: 首页 > news >正文

网站建设与管理收获池州网站建设

网站建设与管理收获,池州网站建设,石家庄外贸网站制作,南宁北京网站建设前言 在Spring中#xff0c;条件注解可根据特定的条件来决定是否创建或配置Bean#xff0c;这些条件可以基于类、属性、环境等因素。通过使用条件注解#xff0c;我们可以在Spring容器中更加灵活地管理和控制组件的创建和注入#xff0c;帮助我们更加灵活地管理和控制Bean… 前言 在Spring中条件注解可根据特定的条件来决定是否创建或配置Bean这些条件可以基于类、属性、环境等因素。通过使用条件注解我们可以在Spring容器中更加灵活地管理和控制组件的创建和注入帮助我们更加灵活地管理和控制Bean的创建和注入提高代码的灵活性和可维护性。总之使用很简单功能很强大。 如果你在项目里有类似下面这样的需求场景选择使用相关的条件注解绝对是是非常优雅的实现没有之一。干货内容呀如果怕以后找不到马上收藏关注吧。 自动化配置根据特定的条件来决定是否创建或配置Bean例如根据类路径下是否包含特定的库、特定的环境变量是否设置等条件来控制Bean的创建。条件化装配在Spring容器中根据条件来决定是否加载某个Bean例如根据当前所处的环境如开发、测试、生产来控制Bean的创建。Bean依赖在Spring容器中根据条件来决定是否创建依赖的Bean例如只有当另外某个特定Bean也声明了之后才创建某个Bean。自定义条件通过实现Condition接口自定义条件逻辑根据特定条件来控制Bean的创建行为。 Springboot的相关条件注解大盘点 ConditionalOnClass当指定的class存在时才会注入。 ConditionalOnMissingClass当指定的class不存在时才会注入。 ConditionalOnProperty当指定的属性存在于application.properties文件中时才会注入。 ConditionalOnResource当指定的资源文件存在时才会注入。 ConditionalOnWebApplication用于判断当前应用是否为Web应用。 ConditionalOnNotWebApplication用于判断当前应用是否非Web应用。 ConditionalOnBean当Spring容器中存在指定的Bean时才会注入。 ConditionalOnMissingBean当Spring容器中不存在指定的Bean时才会注入。 ConditionalOnSingleCandidate当Spring容器中存在且仅存在一个指定的Bean时才会注入。 ConditionalOnExpression当SpEL表达式为真时才会注入。 ConditionalOnJava根据Java版本进行判断不同版本有不同的处理方式。 Springboot的相关条件注解的功能描述与使用 ConditionalOnClass ConditionalOnClass注解的作用是当项目中存在某个类时才会使标有该注解的类或方法生效。这个注解可以用来进行条件判断以便在特定的类存在时才加载相应的Bean。例如如果项目中引入了ApacheHttpClient包那么可以使用ConditionalOnClass(ApacheHttpClient.class)注解来标识这个Bean只有当ApacheHttpClient类存在于类路径下时才会构建这个Bean。 在这个示例中ConditionalOnClass(ApacheHttpClient.class)注解表示只有当ApacheHttpClient类存在于类路径下时才会加载HttpClientConfig类中的Bean。如果ApacheHttpClient类不存在那么HttpClientConfig类中的Bean将不会被创建和注入。 Configuration ConditionalOnClass(ApacheHttpClient.class) public class HttpClientConfig { Bean public ApacheHttpClient httpClient() { return new ApacheHttpClient(); } } ConditionalOnMissingClass ConditionalOnMissingClass注解的作用是在类路径下不存在指定类时才会使标有该注解的类或方法生效。这个注解可以用来进行条件判断以便在特定的类不存在时才加载相应的Bean。例如如果项目中没有引入MySQL数据库驱动包那么可以使用ConditionalOnMissingClass(MySQL.class)注解来标识这个Bean只有当MySQL类不存在于类路径下时才会构建这个Bean。 Configuration ConditionalOnMissingClass(com.example.NonExistentClass) public class MyConfig { // Bean definitions go here } 在这个示例中ConditionalOnMissingClass注解表示只有当com.example.NonExistentClass这个类不存在时才会加载MyConfig类中的Bean。如果这个类存在那么MyConfig类中的Bean将不会被创建和注入。 ConditionalOnProperty ConditionalOnProperty注解的作用是根据指定的属性值来决定是否加载带有该注解的类或方法。如果属性存在且具有指定的值那么带有ConditionalOnProperty注解的类或方法将会被加载否则将不会加载。它通常用于在Spring应用程序中根据外部配置来决定哪些Bean需要创建和注入。 使用ConditionalOnProperty注解时可以通过指定属性名称和属性值来进行条件判断。其中属性名称可以是应用程序配置文件如application.properties中的任意属性而属性值则可以是任何字符串表达式。当配置文件中的属性值与指定的属性值相匹配时带有ConditionalOnProperty注解的类或方法将会被加载。 例如假设在应用程序的配置文件中有一个名为myapp.database.url的属性我们希望当该属性的值为jdbc:mysql://localhost:3306/mydb时才加载某个Bean。这时我们可以在定义该Bean的类中使用ConditionalOnProperty注解并指定属性名称和属性值如下所示 Configuration ConditionalOnProperty( name myapp.database.url, havingValue jdbc:mysql://localhost:3306/mydb ) public class MyBeanConfig { Bean public MyBean myBean() { return new MyBean(); } } 在上面的示例中当配置文件中的myapp.database.url属性值为jdbc:mysql://localhost:3306/mydb时MyBeanConfig类中的Bean才会被创建和注入。否则该Bean将不会被加载。 ConditionalOnResource ConditionalOnResource注解的作用是当指定的资源文件存在时才会使带有该注解的类或方法生效。它通常用于在Spring应用程序中根据资源文件的存在与否来决定哪些Bean需要创建和注入。 使用ConditionalOnResource注解时需要指定资源文件的路径和名称。当应用程序在启动时检测到该资源文件存在时带有ConditionalOnResource注解的类或方法将会被加载否则将不会加载。 例如假设我们有一个名为config.properties的配置文件其中包含了一些应用程序的配置信息。我们希望当该配置文件存在时才加载某个Bean。这时我们可以在定义该Bean的类中使用ConditionalOnResource注解并指定配置文件的路径和名称如下所示 Configuration ConditionalOnResource(resources config.properties) public class MyBeanConfig { Bean public MyBean myBean() { return new MyBean(); } } 在上面的示例中当应用程序在启动时检测到config.properties文件存在时MyBeanConfig类中的Bean才会被创建和注入。否则该Bean将不会被加载。 ConditionalOnWebApplication ConditionalOnWebApplication注解用于判断当前SpringBoot应用是否为Web应用。根据应用类型可以进一步确定是否满足某种特定的条件。 使用方式 Configuration ConditionalOnWebApplication(type Type.SERVLET) public class ForMatterAutoConfiguration { // Bean definitions go here } 在上述示例中ConditionalOnWebApplication(type Type.SERVLET)表示只有当SpringBoot应用类型为SERVLET应用类型时ForMatterAutoConfiguration才会被加载到Spring容器。 该注解支持以下三种类型 Type.ANY: 当应用是任何Web应用时该注解修饰的配置类或方法都会生效。 Type.REACTIVE: 当应用是反应式Web应用Spring WebFlux时该注解修饰的配置类或方法才会生效。 Type.SERVLET: 当应用是基于Servlet的Web应用Spring MVC时该注解修饰的配置类或方法才会生效。 ConditionalOnNotWebApplication ConditionalOnNotWebApplication注解用于判断当前SpringBoot应用是否非Web应用。当应用类型不是Web应用类型时带有该注解的类或方法将会被加载否则将不会加载。 使用方式 Configuration ConditionalOnNotWebApplication public class ForMatterAutoConfiguration { // Bean definitions go here } 在上述示例中只有当SpringBoot应用类型不是Web应用类型时ForMatterAutoConfiguration才会被加载到Spring容器。 ConditionalOnBean ConditionalOnBean注解是当Spring容器中有某个Bean时才装配。 这个注解通常用于控制某个Bean的创建和注入只有当容器中已经存在指定的Bean时带有该注解的类或方法才会被加载。 使用示例 Configuration ConditionalOnBean(name userBean) public class MyBeanConfig { Bean public MyBean myBean() { return new MyBean(); } } 在上面的示例中只有当容器中存在名为userBean的Bean时MyBeanConfig类中的myBean()方法才会被创建和注入。 注意 ConditionalOnClass和ConditionalOnBean都是Spring框架中用于条件化配置的注解但它们的作用和使用场景有所不同。 ConditionalOnClass注解用于判断classpath下是否存在某个类。当classpath下存在指定类型的类时带有该注解的类或方法才会被加载。它通常用于在类路径中引入某个类时进行条件判断。 ConditionalOnBean注解则用于判断Spring容器中是否存在某个Bean。当容器中有指定类型的Bean时带有该注解的类或方法才会被加载。它通常用于在Spring容器中已有某个Bean时进行条件判断。 总结来说ConditionalOnClass和ConditionalOnBean都用于条件化配置但前者用于判断classpath下是否存在某个类后者用于判断容器中是否存在某个Bean。根据实际需求选择使用适当的注解。 ConditionalOnMissingBean ConditionalOnMissingBean注解用于判断Spring容器中是否存在指定类型的Bean。如果容器中不存在该类型的Bean那么带有该注解的类或方法才会被加载否则将不会加载。 使用示例 Configuration ConditionalOnMissingBean(type com.example.MyBean) public class MyBeanConfig { Bean public MyBean myBean() { return new MyBean(); } } 在上面的示例中只有当容器中不存在类型为com.example.MyBean的Bean时MyBeanConfig类中的myBean()方法才会被创建和注入。否则该Bean将不会被加载。 需要注意的是ConditionalOnMissingBean注解通常用于避免多个配置同时注入的风险。对于自定义的配置类建议加上ConditionalOnMissingBean注解以确保只有当容器中不存在指定类型的Bean时才会加载该配置。 注意 ConditionalOnMissingClass和ConditionalOnMissingBean都用于判断当前上下文是否存在某个对象如果不存在则实例化一个Bean。然而它们分别用于判断类和Bean的存在与否。 ConditionalOnMissingClass用于判断某个类是否存在于classpath中。当指定的类不存在时带有该注解的类或方法才会被加载。 ConditionalOnMissingBean用于判断某个Bean是否存在于Spring容器中。当容器中不存在指定类型的Bean时带有该注解的类或方法才会被加载。 因此ConditionalOnMissingClass和ConditionalOnMissingBean分别用于不同的场景需要根据具体需求选择使用。 ConditionalOnSingleCandidate ConditionalOnSingleCandidate注解用于检测容器中是否存在匹配的单个候选Bean。只有当容器中只有单个候选Bean时带有该注解的类或方法才会被加载否则将不会加载。 使用示例 Configuration ConditionalOnSingleCandidate(MyBean.class) public class MyBeanConfig { Bean public MyBean myBean() { return new MyBean(); } } 在上面的示例中只有当容器中存在类型为com.example.MyBean且只有一个候选Bean时MyBeanConfig类中的myBean()方法才会被创建和注入。否则该Bean将不会被加载。 需要注意的是ConditionalOnSingleCandidate注解通常用于确保容器中只存在一个指定类型的Bean以避免多个实例同时存在的情况。对于需要确保单例的Bean建议使用ConditionalOnSingleCandidate注解进行条件判断。 ConditionalOnExpression ConditionalOnExpression注解用于根据给定的SpELSpring Expression Language表达式来决定是否加载带有该注解的类或方法。当表达式的结果为true时该类或方法才会被加载否则将不会加载。 使用示例 Configuration ConditionalOnExpression(${my.feature.enabled:false}) public class MyFeatureConfig { Bean public MyFeature myFeature() { return new MyFeature(); } } 在上面的示例中当配置文件中的my.feature.enabled属性值为true时MyFeatureConfig类中的myFeature()方法才会被创建和注入。否则该Bean将不会被加载。 需要注意的是ConditionalOnExpression注解通常用于根据配置文件中的属性值来动态决定是否加载某个类或方法。在实际使用中需要根据具体的业务需求来设置SpEL表达式以满足不同的条件判断需求。 ConditionalOnJava ConditionalOnJava注解用于根据当前运行的Java版本决定是否加载带有该注解的类或方法。可以根据不同的Java版本来控制不同版本的Bean的创建和注入。 使用示例 Configuration ConditionalOnJava(9) public class Java9Config { Bean public MyJava9Bean myJava9Bean() { return new MyJava9Bean(); } } 在上面的示例中只有当当前运行的Java版本为9时Java9Config类中的myJava9Bean()方法才会被创建和注入。否则该Bean将不会被加载。 需要注意的是ConditionalOnJava注解只能检测当前运行的Java版本而不能检测其他已安装的Java版本。如果需要检测其他版本的Java可以使用其他条件判断注解或通过其他方式进行检测。
http://www.yutouwan.com/news/347673/

相关文章:

  • 个人博客网站设计的目的网络营销做得好的企业
  • 网站欣赏与创建网页深圳企业500强名单
  • 中交建设集团 网站域名价格是怎么收费的
  • 辣条类网站建设规划书网络推广公司重诚
  • 平面设计创意网站建设自己做网站选什么好
  • 百捷网站建设wordpress免费自定义模板装修教程
  • 高端网站建设需要多少钱北京网站制作闪快
  • 网站建设空间和服务器方式关于网站建设的英文歌
  • 公司网站后台导航链接怎么做规划怎样做网站
  • 网站建设制作专业啥是东莞网站优化推广
  • wordpress全站ajax插件网络建设的流程网站
  • 商城网站设计注意什么外包网站建设报价
  • 外贸网站平台哪个好网站小图标怎么做的
  • 浙江台州做网站的公司有哪些医院门户网站开发
  • 安顺网站开发公司admin手机登录账号
  • 珠海新盈科技有限公司 网站建设淄博展厅设计公司
  • 站长之家最新网站网站icp查询
  • 桌面上链接网站怎么做如何做网站支付接口
  • 南宁网站推广v1展厅展馆设计
  • 泉州市住房与城乡建设网站签约网站做PPT
  • 19楼网站模板怎么更改公司网站域名
  • 那种网站打不开做摄影网站的目的是什么意思
  • 微信网站作用wordpress百度主动不推送了
  • 装修网站免费设计搜索引擎案例分析结论
  • 建设局工程网站知名企业名字
  • 申请免费个人网站和域名余姚做网站设计的公司
  • 网站建设招聘济南网站建设成之运维
  • 做液氮冰淇淋店网站wordpress 自定义 sql
  • 哈尔滨 房产网站建设企业策划工作内容
  • 域名怎么绑定网站wordpress 多用户插件