目录
官方解析
@SpringBootApplication有如下3个特点:
1. @EnableAutoConfiguration: 能够启动Spring Boot的自动配置机制;
2. @ComponentScan: 能够在spring应用程序跑的那个包的位置上,扫描到其他的组建;
3. @Configuration: 允许在上下文中注册而外的beans,并且导入额外的配置文件;
@SpringBootApplication等于同时使用@Configuration, @EnableAutoConfiguration,@ComponentScan
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@SpringBootApplication还提供了自定义@EnableAutoConfiguration和@ComponentScan注解的别名。
可以使用下面的例子来替代@SpringBootApplication。
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在这个示例中,应用程序与任何其他Spring引导应用程序一样,但没有自动检测到@component注释的类,并且显式地导入了用户定义的bean(参见@Import)。
博主例子
这里以Spring Boot 1.5.19为例:
程序结构如下:
源码如下:
HelloController.java
package com.IT1995.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
DemoApplication.java
package com.IT1995.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
程序运行截图如下:
当把@SpringBootApplication改为@EnableAutoConfiguration、@ComponentScan、@Configuration
后,如下图:
同样可以跑的,并且没有报错,运行截图如下:
下面来演示下这个特点:
@ComponentScan: 能够在spring应用程序跑的那个包的位置上,扫描到其他的组建;
正确的包结构如下:
当包结构是这样的时候,@SpringBootApplication就扫描不到!
@Controller等注解了!
如下: