【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