当前位置: 首页 > 知识库问答 >
问题:

没有SpringBootApplication,SpringBootRestController如何工作?

祁博涛
2023-03-14

在我的项目中,我使用了@Configuration、@EnableAutoConfiguration、@ComponentScan和带有注释的重要资源配置。我没有使用@SpringBootApplication,但应用程序在没有@SpringBootApplication注释的情况下成功构建。我不明白为什么不调用@RestController类?

    @Configuration
@EnableAutoConfiguration(exclude = {
        //removed default db config
        DataSourceAutoConfiguration.class, XADataSourceAutoConfiguration.class})
@ComponentScan(basePackages = { "com.test.debasish.dummy" }, excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = Test.class))})
@ImportResource( value = {"classpath*:*beans*.xml"})
public class TestApplication{
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}



@RestController
public class TestController {
  private static final String template = "Hello, %s!";
  private final AtomicLong counter = new AtomicLong();


  @GetMapping("/test")
  @ResponseBody
  public Greeting getResource(@RequestParam(name="name", required=false, defaultValue="Stranger") String name) {
    
    return new Greeting(counter.incrementAndGet(), String.format(template, name));
  }

}

共有2个答案

辛建业
2023-03-14

它之所以有效,是因为@springbootApplication注释还包括@Configuration、
@EnableAutoConfiguration、@ComponentScan注释。请参阅下图

https://i.stack.imgur.com/PKkb8.jpg

轩辕翰
2023-03-14

要使用RestController,您需要设置spring webmvc。

通常,它是通过使用spring-boot-starter-web自动完成的。

更多细节:

  • https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-具有spring mvc自动配置功能

如果您想完全控制Spring MVC,您可以添加您自己的带有启用WebMVC注释的配置,或者添加您自己的带有注释的删除WebMVC配置,如启用WebMVC的Javadoc所述。

 类似资料:
  • 没有@SpringBootApplication的Spring Boot应用程序如何工作? 在我们的项目中,我们使用了@component、@configuration和带有@bean注释的bean配置。稍后我们注释了spring-boot-maven-plugin依赖项和@springbootapplication,但应用程序在没有@springbootapplication注释的情况下成功构建

  • 问题内容: 我在阅读redux的示例文档,然后发现了这个容器组件的示例。有人可以解释为什么在这种情况下不需要mapDispatchToProps吗。同样,该函数如何获得调度功能? 问题答案: 将作为一个组件传递,即使没有状态或预定义的动作也仍然有用。多数民众赞成在不需要您的代码的原因 现在,在组件中,您正在分解道具以仅访问。 如果您利用它,可以将您的操作作为对组件的支持,然后将其命名为。因此,上述

  • 我正在尝试在两个非Web应用程序之间实现一个RESTendpoint,所有配置都在XML文件中。 我创建了一个简单的控制器,其方法只返回,因此我可以使用Postman运行一些测试。 不幸的是,endpoint没有被创建。 我做了一些研究,发现我需要添加“上下文”标记,组件扫描指向控制器包,这样它才能工作 但我目前的实施不足以让它工作: 我的控制器类是: 我的问题是:有没有办法在不使用注释主类的情况

  • 我有带Apache2的PHP,我想在没有Artisan的情况下运行Laravel框架,但我不能!有人知道如何在没有工匠的情况下管理拉威尔吗?

  • 我想外部化的选项,有一个可重用的类或注释,我可以扔在排除任何数据库/Hibernate初始化。 因此,与其写: 我想创建一个注释,我可以应用到我的主类: 然后通过注释启用此功能: 问题:注释方法不起作用,Spring仍然尝试加载数据库。为什么啊? 我的最终目标是拥有多个配置文件,其中只有一个加载数据库。

  • 问题内容: 我知道什么是标记界面以及何时需要使用它。我仍然不清楚一个问题。如果标记接口没有任何方法或主体,那么它在运行时如何工作? 问题答案: 标识接口,可以进行分类