【Java Web开发学习】Spring4条件化的bean

【Java Web开发学习】Spring4条件化的bean

转载:https://www.cnblogs.com/yangchongxing/p/9071960.html

Spring4引入了@Conditional注解,可以用到带有@Bean注解的地方,若给定的条件计算为true则创建bean,否则bean被忽略

用法:@Conditional(PlayerCondition.class),设置为@Conditional注解的类必须是任意实现了org.springframework.context.annotation.Condition接口的类。该接口只有一个方法

public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {},返回boolean

复制代码
package cn.ycx.web.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

import cn.ycx.web.model.Painter;
import cn.ycx.web.model.PainterCondition;
import cn.ycx.web.model.Player;
import cn.ycx.web.model.PlayerCondition;
@Configuration
public class TestConfig {
    @Bean
    @Conditional(PlayerCondition.class)
    public Player player() {
        return new Player();
    }
    @Bean
    @Conditional(PainterCondition.class)
    public Painter painter() {
        return new Painter();
    }
}
复制代码
复制代码
package cn.ycx.web.model;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;

public class PlayerCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {
        Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PALY");
    }
}
复制代码
复制代码
package cn.ycx.web.model;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;

public class PainterCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata matadata) {
        Environment env = context.getEnvironment();return env.containsProperty("CONDITION_PAINT");
    }
}
复制代码

环境变量包含CONDITION_PALY就创建PlayerCondition

环境变量设置:

windows系统

spring.CONDITION_PALY=play

ubuntu系统

当前用户

$ vim ~/.bashrc
追加 export CONDITION_PALY=play
$ source ~/.bashrc

所有用户

# vim /etc/profile
追加 export CONDITION_PALY=play
# source /etc/profile
posted @   翠微  阅读(279)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示