首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建基于自动配置spring boot 1.4.0的控制器

如何创建基于自动配置spring boot 1.4.0的控制器
EN

Stack Overflow用户
提问于 2016-09-18 05:48:29
回答 3查看 3.4K关注 0票数 1

我使用的是spring boot 1.4.0

我只想在某些情况下在我的spring boot应用程序中创建一个控制器。例如,如果存在命名为"neededBean“的bean。

此"neededBean“位于AutoConfiguration类中,只有在特定条件下才会创建它。

我想要避免创建控制器,如果neededBean不满足其自动配置condition.So,我不能用@Controller注释我的类,因为它将被创建,而与自动配置类无关

有什么方法可以实现我想要的吗?

EN

Stack Overflow用户

回答已采纳

发布于 2016-09-18 14:18:19

对于你的提议,org.springframework.boot.actuate.endpoint.mvc.AbstractMvcEndpoint是一个很好的开始。

这是一个例子,这只是给出了你的情况的解决方案,但对现实世界没有用处。这里我使用的是@ConditionalOnClass,但对于您来说,需要使用@ConditionalOnBean@ConditionalOnMissingBean

RabbitEndpoint.java -只有在使用Tomcat时才会自动配置。

代码语言:javascript
运行
复制
/**
 * @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,注册自动配置类

代码语言:javascript
运行
复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=io.cloudhuang.web.RabbitEndpoint

然后启动spring boot应用程序,访问路径"http://localhost:8080/rabbit

您将获得控制台输出

代码语言:javascript
运行
复制
 ------ Auto-Configuration on Tomcat.class Conditional ------ 
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39552060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档