@SpringBootApplication
之前用户使用3个注解去注解他们的main类。分别是@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。
@ComponentScan
注解在类上,扫描标注了@Controller等注解的类,注册为bean 。@ComponentScan 为 @Configuration注解的类配置组件扫描指令。@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解的类,并注册成bean,当然包括 @Component下的子注解@Service、@Repository、@Controller。
@Configuration
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。(另一种理解方式:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。 IOC容器的配置类一般与 @Bean 注解配合使用,用 @Configuration 注解类等价与 XML 中配置 beans,用@Bean 注解方法等价于 XML 中配置 bean)
注意:@Configuration注解的配置类有如下要求:
- @Configuration不可以是final类型;
- @Configuration不可以是匿名类;
- 嵌套的configuration必须是静态类
@Bean
注解在方法上,声明当前方法返回一个Bean
@RestController
@RestController 是一个结合了 @ResponseBody 和 @Controller 的注解
@ResponseBody
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上@Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
@Controller
注解在类上,表示这是一个控制层bean
@Service
注解在类上,表示这是一个业务层bean
@Component
注解在类上,表示通用bean ,value不写默认就是类名首字母小写
@Autowired
按类型注入.默认属性required= true;当不能确定 Spring 容器中一定拥有某个类的Bean 时, 可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false), 这等于告诉Spring:在找不到匹配Bean时也不抛出BeanCreationException 异常。@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变byName 了。@Autowired可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。
@RequestParam
使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值,不写的时候也可以获取到参数值,但是必须名称对应。参数可以省略不写
@PathVariable
使用@PathVariable时,URL是这样的:http://host:port/path/参数值
@RequestMapping
和请求报文是做对应的
- value,指定请求的地址
- method 请求方法类型 这个不写的话,自适应:get或者post
- consumes 请求的提交内容类型
- produces 指定返回的内容类型 仅当request请求头中的(Accept)类型中包含该指定类型才返回
- params 指定request中必须包含某些参数值
- headers 指定request中必须包含指定的header值
- name 指定映射的名称