使用类库配置扫描REST控制器类

时间:2015-02-27 14:28:37

标签: java spring rest spring-mvc

我正在将我的spring mvc应用程序转移到spring boot应用程序。 我也将我的xml基本配置转移到基于类。

我做了大部分事情。 我只是不知道如何扫描REST控制器包。 Bean正在创建,但REST控制器bean不会创建。

使用哪种注释?在哪里给出配置来扫描控制器。 还是不知道。

在XML中我有标签:

<context:component-scan base-package="ApiServer" />

现在如何将其转换为我不知道的简单类配置。 控制器:

@Controller
@RequestMapping(value = SeriesController.BASE_URL)
public class SeriesController {

    public static final String BASE_URL = "/setup/series";  

    @RequestMapping(method = RequestMethod.GET)
    public @ResponseBody
    ResponseEntity<List<SeriesResponse>> getSeries(){
        List<SeriesResponse> responses = new ArrayList<>();       
        return new ResponseEntity<>(responses, HttpStatus.OK);
    }
}

主类:

@SpringBootApplication
public class Application  {
    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println("BEAN :: " + beanName);
        }
    }
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        CORSFilter corsFilter = new CORSFilter();
        registrationBean.setFilter(corsFilter);
        registrationBean.setOrder(1);
        return registrationBean;
    }
}

2 个答案:

答案 0 :(得分:3)

您可以在配置类上使用@ComponentScan,使用下面的基础软件包扫描您的其余控制器。

@SpringBootApplication
@ComponentScan(basePackages="ApiServer")
public class Application  {
    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println("BEAN :: " + beanName);
        }
    }

答案 1 :(得分:0)

@SpringBootApplication是三个注释的集合。 @ComponentScan是其中之一。因此,无需两次声明。这将达到目的:

@SpringBootApplication(scanBasePackages = "apiserver")
public class Application  {
    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println("BEAN :: " + beanName);
        }
    }
}