package com.condition;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class WindowsCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// TODO Auto-generated method stub
return context.getEnvironment().getProperty("os.name").contains("Windows");
}
}
package com.condition;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class LinuxCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// TODO Auto-generated method stub
return context.getEnvironment().getProperty("os.name").contains("Linux");
}
}
package com.condition;
public interface ListService {
public String showCmd();
}
package com.condition;
import org.springframework.stereotype.Service;
@Service
public class WindowsService implements ListService {
@Override
public String showCmd() {
// TODO Auto-generated method stub
return "cmd";
}
}
package com.condition;
import org.springframework.stereotype.Service;
@Service
public class LinuxService implements ListService {
@Override
public String showCmd() {
// TODO Auto-generated method stub
return "ls";
}
}
package com.condition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ConditionConfig {
@Bean
@Conditional(WindowsCondition.class)
public ListService windowsService() {
return new WindowsService();
}
@Bean
@Conditional(LinuxCondition.class)
public ListService linuxService() {
return new LinuxService();
}
}