public class LinuxCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Linux"); }
}
=============================================
public class MacCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Mac"); }
}
=============================================
public class WindowsCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Windows");
}
}
=============================================
@Configuration
public class MyConfiguration {
@Bean(name="emailerService")
@Conditional(WindowsCondition.class)
public Object windowsEmailerService(){
return new Object();
}
@Bean(name="emailerService")
@Conditional(LinuxCondition.class)
public Object linuxEmailerService(){
return new Object();
}
@Bean(name="emailerService")
@Conditional(MacCondition.class)
public Object macEmailerService(){
return new Object();
}
}
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Linux"); }
}
=============================================
public class MacCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Mac"); }
}
=============================================
public class WindowsCondition implements Condition{
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Windows");
}
}
=============================================
@Configuration
public class MyConfiguration {
@Bean(name="emailerService")
@Conditional(WindowsCondition.class)
public Object windowsEmailerService(){
return new Object();
}
@Bean(name="emailerService")
@Conditional(LinuxCondition.class)
public Object linuxEmailerService(){
return new Object();
}
@Bean(name="emailerService")
@Conditional(MacCondition.class)
public Object macEmailerService(){
return new Object();
}
}
本文介绍了一个基于Spring框架的示例,展示了如何根据不同操作系统条件选择性地实例化特定的服务Bean。通过实现Condition接口并覆盖matches方法,可以判断当前运行的操作系统,并相应地创建Windows、Linux或Mac专属的Emailer服务。
307

被折叠的 条评论
为什么被折叠?



