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

哪些网站是做婴童辅食招商的网上报建贵州建设局网站

哪些网站是做婴童辅食招商的,网上报建贵州建设局网站,淘宝上找网站建设好吗,模具加工东莞网站建设技术支持10、底层注解-Conditional条件装配 Conditional是Spring框架中用于条件装配的核心注解,它允许根据特定条件决定是否将某个组件或配置加载到Spring容器中。通过在类或方法上使用Conditional,可以实现灵活的自动化配置,适应不同的环境和需求。 …

10、底层注解-@Conditional条件装配

`@Conditional`是Spring框架中用于条件装配的核心注解,它允许根据特定条件决定是否将某个组件或配置加载到Spring容器中。通过在类或方法上使用`@Conditional`,可以实现灵活的自动化配置,适应不同的环境和需求。

### 基本用法

`@Conditional`注解需要指定一个或多个实现了`Condition`接口的条件类。`Condition`接口的`matches`方法用于编写条件判断逻辑,返回`true`表示条件满足,组件将被加载;返回`false`则表示条件不满足,组件将被忽略。

```java

public class MyCondition implements Condition {

    @Override

    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

        // 编写条件判断逻辑,例如:

        return context.getEnvironment().getProperty("my.property") != null;

    }

}

@Configuration

public class AppConfig {

    @Bean

    @Conditional(MyCondition.class)

    public MyComponent myComponent() {

        return new MyComponent();

    }

}

```

在上述例子中,只有当`my.property`属性在配置文件中存在时,`MyComponent`才会被创建并注册到容器中。

### 常用内置条件注解

Spring Boot提供了一系列内置的条件注解,简化了常见的条件判断:

#### `@ConditionalOnProperty`

根据配置属性的值决定是否加载组件。

```java

@Bean

@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")

public MyFeatureComponent myFeatureComponent() {

    return new MyFeatureComponent();

}

```

只有当`my.feature.enabled`属性值为`true`时,`MyFeatureComponent`才会被创建。

#### `@ConditionalOnClass`

当类路径中存在指定的类时,条件满足。

```java

@Bean

@ConditionalOnClass(name = "com.example.SomeClass")

public MyComponent myComponent() {

    return new MyComponent();

}

```

如果类路径中存在`com.example.SomeClass`,则`MyComponent`会被加载。

#### `@ConditionalOnMissingClass`

与`@ConditionalOnClass`相反,当类路径中**不存在**指定的类时,条件满足。

#### `@ConditionalOnBean`

当容器中已经存在指定类型的Bean时,条件满足。

```java

@Bean

@ConditionalOnBean(MyDependency.class)

public MyComponent myComponent() {

    return new MyComponent();

}

```

如果容器中已有`MyDependency`类型的Bean,`MyComponent`才会被创建。

#### `@ConditionalOnMissingBean`

与`@ConditionalOnBean`相反,当容器中**不存在**指定类型的Bean时,条件满足。

#### `@ConditionalOnExpression`

根据SpEL表达式的结果决定是否加载组件。

```java

@Bean

@ConditionalOnExpression("${my.expression} == true")

public MyComponent myComponent() {

    return new MyComponent();

}

```

当SpEL表达式`my.expression`的值为`true`时,`MyComponent`会被创建。

### 自定义条件注解

除了使用内置条件注解,还可以创建自定义条件注解,增强代码的可读性和复用性。

```java

@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Conditional(MyCondition.class)

public @interface MyCustomCondition {

    // 可添加自定义属性

}

@Configuration

public class AppConfig {

    @Bean

    @MyCustomCondition

    public MyComponent myComponent() {

        return new MyComponent();

    }

}

```

### 注意事项

- **避免循环依赖**:在条件判断中应避免引用尚未初始化的组件,防止循环依赖。

- **性能考虑**:条件判断可能涉及较复杂的逻辑,应确保性能合理,避免影响应用启动速度。

- **缓存结果**:对于耗时的条件判断,可以利用`Condition`接口中的`getConfigurationPhase`方法,在配置阶段缓存结果,提升性能。

### 应用场景

- **多环境配置**:根据不同环境(开发、测试、生产)加载相应的组件。

- **特性开关**:根据配置决定是否启用某些功能模块。

- **依赖检测**:根据类路径中是否存在特定依赖,选择性地加载组件。

- **动态配置**:根据运行时条件动态调整组件的加载。

通过`@Conditional`注解,可以实现灵活的条件装配,提高Spring应用的配置灵活性和可维护性,适应各种复杂的业务场景。


文章转载自:

http://twWD0L5H.zrjzc.cn
http://84gIsixR.zrjzc.cn
http://8LGCoxuT.zrjzc.cn
http://bg05xwdL.zrjzc.cn
http://PkwaKiiK.zrjzc.cn
http://wPIDIZ6L.zrjzc.cn
http://1A1l9As2.zrjzc.cn
http://Ac1xMeO0.zrjzc.cn
http://6abKyd5w.zrjzc.cn
http://3ui7PddX.zrjzc.cn
http://4toPt0dg.zrjzc.cn
http://EMVvbwwd.zrjzc.cn
http://3Ih4rQxD.zrjzc.cn
http://zoTDGlgH.zrjzc.cn
http://jLCQOSly.zrjzc.cn
http://FZ72Ob7S.zrjzc.cn
http://CblBesvg.zrjzc.cn
http://51kCtHvH.zrjzc.cn
http://q3V49O5W.zrjzc.cn
http://onkGgi05.zrjzc.cn
http://oVHNv1Vr.zrjzc.cn
http://jKJrftvH.zrjzc.cn
http://N2EcB7rx.zrjzc.cn
http://LtL4xfa5.zrjzc.cn
http://5rEZ71Cl.zrjzc.cn
http://xjTq9Y3s.zrjzc.cn
http://maWddNqT.zrjzc.cn
http://CphDgkuh.zrjzc.cn
http://M7AHGdBk.zrjzc.cn
http://vv9HyF5C.zrjzc.cn
http://www.dtcms.com/wzjs/749705.html

相关文章:

  • 学习网站建设要什么学历重庆建站公司价钱
  • js网站建设辣妹子影院电视剧免费播放
  • 中国建设工程协会标准网站diy图片在线制作
  • 企业网站 dede phpcms 帝国app怎么查网站备案
  • wordpress棋牌主题排名优化培训
  • 龙岗网站优化公司案例新冠数据实时更新
  • 绵阳 网站建设肥乡网站建设
  • 常州网站制作公司西安优秀的集团门户网站建设企业
  • 团队如何分工做网站网站建设刂搜金手指下拉二五
  • 股票网站模板 dedecms苏州门户网站建设
  • 免费图标下载网站常州微信网站建设
  • 渭南专业做网站杭州比较好的景观设计公司
  • 有什么设计网站开发公司岗位职责
  • 网站后台忘记账号密码厦门在哪个网站做用工报备
  • 栾城做网站湖州网站设计浙北数据
  • 替老外做网站凡科登陆
  • 巨鹿做网站哪家好网站整站
  • 网站源码绑定域名处理国外做的比较好的购物网站
  • 网站建设与网页制作的实验目的信阳市商务局网站加油站建设公告
  • 湖州市建设局网站自己制作游戏的软件
  • 网站建设先进深圳市中心在哪
  • dede中英文网站 视频建网站可以卖钱
  • vue做响应式网站wordpress发布时间精确到秒
  • 做黄金理财的网站卖菜网站应该怎么做
  • 怎样仿制网站建设工程教育网论坛官网
  • 什么样的网站适合优化代备案域名30元
  • 天河低价网站建设东莞房价2023年最新房价走势
  • 厦门网站建设模板wordpress 导航栏居中
  • vs2019怎么创建网站wordpress自动更新
  • 网站收录率网站建站 seo