在使用Spring boot过程中使用的许多的注解,虽然经常使用,但是有些仅仅在使用的过程中在会去查询所包含的意思,现在将常用的注解进行一个记录。
@SpringBootApplication
这个注解主要是应用启动类的入口上,而且是一个组合注解,里面包含了@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
@SpringBootConfiguration
根据官网的解释 @SpringBootConfiguration
继承自@Configuration
,标志这是一个配置类,并将当前类内声明的一个或多个以@Bean
注解标记的方法的实例注入到到srping容器中,实例名为方法名
@EnableAutoConfiguration
此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。判断项目需要加载的模块,会自动的帮你配置web项目中所需要的默认配置。需要排除一些无需自动配置的类时,可用exclude来排除
如图
此处排除了自带的数据源
@ComponentScan
@ComponentScan
对应于XML配置形式中的 context:component-scan
,会扫描当前包及其子包下被标记的类并纳入到spring的Ioc容器中进行管理;
这些特定的注解大致分为: @Controller
@Entity
@Component
@Service
@Repository等
对于该注解,还可以通过 basePackages 属性来控制该注解的自动扫描范围,如:
1 | @ComponentScan(basePackages = {"com.xiaoming.demo.scoket.controller","com.xiaoming.demo.scoket.entity"}) |
@Controller 和 @RestController
@Controller
使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody
注解
@RestController
用@RestController
类似于@Controller
与@ResponseBody
这两个注解的结合,返回json数据不需要在方法前面加@ResponseBody
注解了,但是返回html页面,视图解析器也无法解析html页面
@RequestMapping
用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
常用注解
value,method;
value:指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method:指定请求的method类型, GET、POST、PUT、DELETE等;consumes,produces;
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;params,headers;
params:指定request中必须包含某些参数值是,才让该方法处理。
headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
最常用的 value 和methid
@RequestMapping(value=”/admin”, method = RequestMethod.GET)
用get的方式访问为”/admin”
常用简化的注解是@GetMapping
,@PostMapping
@GetMapping
等价于 @RequestMapping(method = RequestMethod.GET)
@PostMapping
等价于 @RequestMapping(method = RequestMethod.POST)
RequestBody和@ResponseBody
@RequestBody
是作用在形参列表上,用于将前台发送过来固定格式的数据封装为对应的 JavaBean 对象,进行前后台交互。
@ResponseBody
注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,效果等同于通过response对象输出指定格式的数据
1
2
3
4
5 @RequestMapping("/login")
@ResponseBody
public User login(User user){
return user;
}
User在前台接收到的数据为:{“loginName”:”xxx”,”name”:”xxx”}
@Component
可以理解为:一个类上添加@Component注解后,表明这个类会作为组件类,并告知Spring要为这个类创建bean,并实例化到spring容器中,相当于配置文件中的
Component与@Bean的区别
@Component(@Controller、@Service、@Repository):通过类路径扫描来自动侦测以及自动装配到Spring容器中。
@Bean:注在标有该注解的方法中定义产生这个bean的逻辑。
@ConfigurationProperties
@ConfigurationProperties注解需要和@Component搭配使用,主要是为了让 @ComponentScan 扫描到,只有当类所在的包被@ComponentScan 注解扫描到才会生效,默认情况下,该注解会扫描在主应用类下的所有包结构;prefix代表配置前缀,配置文件中的前缀是什么, prefix 中就使用什么。成员变量就是对应的配置文件的第二级属性名,容器会自动绑定配置文件的数据到对应的配置属性类中。
定义的属性的
注意事项:
- 在prefix其外部特性将被结合到类的字段定义。
- 根据Spring Boot的宽松绑定 规则,类的属性名称必须与外部属性的名称匹配。
- 我们可以通过简单地用值初始化字段来定义默认值。
- 类本身可以是包私有的。
- 类的字段必须有公共setter。
下面是为自己在项目中的使用
配置文件是.yml
在配置文件中进行自定义参数的声明
定义一个配置类,添加@Component和@ConfigurationProperties其中prefix填写的是自定义参数的前缀。
类里面的成员变量为二级属性名
在使用用过程中
通过@Autowired进行注解使用,通过get获得到值结束
目前互联网上很多大佬都有SpringBoot系列教程,文章中如有相同之处,请多多包涵,希望留言告诉我,我会积极的进行署名以及添加文章链接地址。若有表达不清楚或者错误之处,还望提出,谢谢!