Spring 控制器根据条件配置是否启用

如果需要根据特定条件动态地启用或禁用Controller,可以使用Spring的条件注解@Conditional。

简单的条件可以直接使用:

@ConditionalOnProperty(prefix = "spring", name = "example.values")

或者

@ConditionalOnProperty(name = "spring.example.values")


以下是一个使用@Conditional注解来根据属性是否存在来启用或禁用Controller的示例:

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
 
public class MyCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        // 检查某个属性是否存在,如果存在则返回true,Controller将被创建
        return context.getEnvironment().containsProperty("my.custom.property");
    }
}
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.mvc.Controller;
 
@Configuration
public class MyControllerConfig {
 
    @Bean
    @Conditional(MyCondition.class)
    public Controller myController() {
        // 实例化并返回Controller
        return new MyCustomController();
    }
}

 

posted @ 2024-08-07 10:23  都是城市惹的祸  阅读(27)  评论(0)    收藏  举报