我使用的是spring boot 1.4.0
我只想在某些情况下在我的spring boot应用程序中创建一个控制器。例如,如果存在命名为"neededBean“的bean。
此"neededBean“位于AutoConfiguration类中,只有在特定条件下才会创建它。
我想要避免创建控制器,如果neededBean不满足其自动配置condition.So,我不能用@Controller注释我的类,因为它将被创建,而与自动配置类无关
有什么方法可以实现我想要的吗?
发布于 2016-09-18 14:18:19
对于你的提议,org.springframework.boot.actuate.endpoint.mvc.AbstractMvcEndpoint是一个很好的开始。
这是一个例子,这只是给出了你的情况的解决方案,但对现实世界没有用处。这里我使用的是@ConditionalOnClass,但对于您来说,需要使用@ConditionalOnBean或@ConditionalOnMissingBean。
RabbitEndpoint.java -只有在使用Tomcat时才会自动配置。
/**
* @author lhuang
*/
@ConditionalOnClass(value = Tomcat.class)
public class RabbitEndpoint extends AbstractMvcEndpoint {
public RabbitEndpoint() {
super("rabbit", true);
}
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void invoke(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
System.out.println(" ------ Auto-Configuration on Tomcat.class Conditional ------ ");
}
}META-INF/spring.factory,注册自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=io.cloudhuang.web.RabbitEndpoint然后启动spring boot应用程序,访问路径"http://localhost:8080/rabbit“
您将获得控制台输出
------ Auto-Configuration on Tomcat.class Conditional ------ https://stackoverflow.com/questions/39552060
复制相似问题