Spring Boot 二十个注解
Spring Boot 二十个注解
占据无力拥有的东西是一种悲哀。
Cold on the outside passionate on the inside.
背景:Spring Boot 注解的强大毋庸置疑,使用其注解可以大量减少XML 等复杂的配置文件,令Java 代码更纯,开发更简单高效,记下一些常用的Spring Boot Annotations,不包括那些在Spring Boot 使用的JPA 和MyBatis 注解。
一、@SpringBootApplication
@SpringBootApplication 注解用于声明自动配置,即让Spring Boot 自动为程序进行必要的配置;@SpringBootApplication 注解配置等同于@Configuration、@EnableAutoConfiguration 和@ComponentScan 三个注解的配置。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @SpringBootApplication
/*@Configuration 三者只和等同于 @SpringBootApplication 注解进行自动配置
@EnableAutoConfiguration
@ComponentScan*/
public class JzxyApplication { public static void main(String[] args) {
SpringApplication.run(JzxyApplication.class, args); } }
二、@Contronller
@Contronller 注解用于定义该类属于控制器类,因为在Sping Boot 项目中是由控制器负责将用户请求的URL 转发到对应的服务接口(Service 服务层),So使用其是必不可少。
/**
* 定义控制器类 @Controller
*/
@Controller
@RequestMapping("/demon/linux")
public class LinuxUsersController { @RequestMapping("/add/host")
public Map getLinuxConn(@RequestBody List<LinuxConnEntity> list) {
Map resultMap = null;
return list == null
? setResult(resultMap, Constant.ZERO, Constant.REQUEST_NULL_MSG)
: linuxUsersServiceImpl.createLinuxConn(list); }
三、@ResponseBody
@ResponseBody 注解表示该方法的返回结果直接写入HTTP 的Response Body 中,该注解一般在异步获取数据时使用,用于构建RESTful 的API;另外,在使用@RequestMapping 注解后返回值通常会解析为路径跳转,而在加上了@ResponseBody 注解后,返回结果则不会被解析为路径而是直接写入HTTP Response Body 中。
/**
* 异步获取json 数据,加上@responsebody 注解后,会直接返回json 数据
*/
@ResponseBody
@RequestMapping("/responsebody")
public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
return linuxUsersServiceImpl.test();
}
四、@RestController
@RestController 注解用于标注控制层组件,其是@ResponseBody 和@Contronller 两个注解的集合。
/**
* @RestController 等价于@Controller 和 @ResponseBody 两个注解的集合
*/
@RestController
@RequestMapping("/responsebody/linux")
public class LinuxUsersController { @RequestMapping("/responsebody")
public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
return linuxUsersServiceImpl.test();
}
五、@RequestMapping
@RequestMapping 是提供路由信息的注解,其是负责URL 到Controller 中的具体函数的映射;此外,该注解后的括号内经常会使用如下六个属性:
1. param:指定请求request 中必须包含某些参数,否则不处理该方法;
2. header:指定请求request 中必须包含某些指定的header 值,否则不处理该方法;
3. value:指定请求的实际地址;
4. method:指定请求的方法method 类型,通常设计为RESTful 风格的GET、POST、PUT 和DELETE;
5. consumes:指定处理请求提交内容的具体类型(即Content-Type),如applicatin/json 和text/html 等类型格式;
6: produces:指定返回的内容类型,设置该属性后仅当request 请求头中的Accept 类型中包含该制定类型时才会返回,需谨慎。
/**
* @RequestMapping 提供路由信息的注解
*/
@RequestMapping("/responsebody")
public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
return linuxUsersServiceImpl.test();
}
六、@EnableAutoConfiguration
@EnableAutoConfiguration 是Spring Boot 自动配置注解,其会根据项目中添加的依赖自动配置Spring 应用;比如Spring Boot 自动配置内嵌tomcat 的端口为8080;还有自动载入应用程序所需的所有Bean,这依赖于Spring Boot 在类路径中的查找结果,就比如你在classpath 下存在HSQLDB,并且没有手动配置任何数据库连接Bean,那么@EnableAutoConfiguration 注解就会自动配置一个内存模型(in-memory)数据库。
七、@ComponentScan
@ComponentScan 注解表示该类会自动发现扫描组件,若扫描到包含@Component、@Controller 和@Service 等注解的类,则会将其注册为Bean,并且可以自动收集所有的Spring 组件,包括有@Configuration 注解标注的类;开发中经常使用@ComponentScan 注解搜索Beans,并结合@Autowired 注解将Beans 注入,若没有进行配置,则Spring Boot 只会扫描SpringBootApplication 启动类所在包下及其子包下的使用了@Service、@Repository 等注解的类。
八、@Configuration
@Configuration 注解作用类似于传统的xml 配置文件;例如,有第三方库需要用到xml 文件,则可以通过添加@Configuration 注解表示该类作为项目的配置主类,然后使用@ImportResource 注解加载xml 配置文件内容。
九、@Import
@Import 注解作用是导入其它配置类。
十、@ImportResource
@ImportResource 注解作用是加载xml 配置文件。
十一、@Autowired
@Autowired 注解的作用是自动导入依赖的Bean;即把配置好的Bean 拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作;并且当加上标签(required=false)时,就算找不到bean 也不报错,允许注入为空。
十二、@Service
@Service 注解的作用是标志某类为Service 层,是Service 服务层组件注解。
十三、@Repository
@Repository 注解作用是标志某类为数据层,其可用于确保DAO 层或者Repositories 能正常转译;当@Repository 注解修饰DAO 或者repositories 类时会被ComponentScan 发现并配置。
十四、@Bean
@Bean 注解相当于XML 配置文件中使用的<bean>标签,初始化的时候创建对象,并交由IOC 容器管理;需要注意的是@Bean 注解是放在方法的上面,而不是类,意思是产生一个bean,并交给spring 管理。
十五、@Value
@Value 注解作用是注入Spring Boot 配置文件application.properties,即获取application.properties 配置文件中属性的值。
@Value(value = "#{VEHIVLE_TOPIC}")
private String VEHIVLE_TOPIC;
十六、@inject
@inject 注解作用与@Autowired 相同,不同的是其没有require 属性,强制要求注入不能为空。
十七、@Component
@Component 注解泛指组件,即当组件不方便归类时,可以使用该注解进行标注归类。
十八、@Qualifier
@Qualifier 注解用于当有多个同一类型的Bean 时,通过@Qualifier(“name”) 根据名字来指定注入的Bean;其需要配合@Autowired 使用,根据名字进行注入,进行更细粒度的控制如何选择要注入的Bean。
十九、@Resouce
@Resouce 注解的作用与@Autowired 相似,都是自动注入依赖的Bean;不同的是@Resource(name=”name”,type=”type”) 多了括号内的属性,当没有括号内内容的话,默认byName。
二十、@PathVariable
@PathVariable 注解的作用是获取路径变量。
/**
* @RequestMapping 获取路径变量
*/
@RequestMapping("/ioc/get/{address}")
public String testOne(@PathVariable String address ) {
/**
* 获取得到路径中address 的值
*/
return address;
}
占据无力拥有的东西是一种悲哀。
Cold on the outside passionate on the insede.
Spring Boot 二十个注解的更多相关文章
- spring boot(二):注解大全
spring boot注解 @Autowired 注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去. ...
- spring boot(二):启动原理解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类 @SpringBootApplication public class Application { public static voi ...
- Spring Boot中@Scheduled注解的使用方法
Spring Boot中@Scheduled注解的使用方法 一.定时任务注解为@Scheduled,使用方式举例如下 //定义一个按时间执行的定时任务,在每天16:00执行一次. @Scheduled ...
- Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控
Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控 Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含: ...
- spring boot @ConditionalOnxxx相关注解总结
Spring boot @ConditionalOnxxx相关注解总结 下面来介绍如何使用@Condition public class TestCondition implements Condit ...
- Spring boot 使用的注解有哪些?
Spring boot 使用的注解有哪些? 注解 作用 @SpringBootApplication 等价于 @Configuration + @EnableAutoConfiguration + @ ...
- (32)Spring Boot使用@SpringBootApplication注解,从零开始学Spring Boot
[来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论] 如果看了我之前的文章,这个节你就可以忽略了,这个是针对一些刚入门的选手存在的困惑进行写的一篇文章. 很多Spring Boot开发者总是使用 ...
- spring boot 中@Autowired注解无法自动注入的错误
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...
- Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解: @SpringBootConfiguration:组合了 ...
随机推荐
- poj 1984 Navigation Nightmare(带权并查集+小小的技巧)
题目链接:http://poj.org/problem?id=1984 题意:题目是说给你n个线,并告知其方向,然后对于后面有一些询问,每个询问有一个时间点,要求你输出在该时间点a,b的笛卡尔距离,如 ...
- 如何配置nginx和tomcat实现反向代理?
什么是反向代理 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务 ...
- sql 多行、一行 互转
原始数据: 期望数据: IF OBJECT_ID('temp_20170701','u') IS NOT NULL DROP TABLE temp_20170701 CREATE TABLE temp ...
- .net core 自定义404 500页面
常用处理方式 自己定制网站的404.500页面的方式有很多,比如修改nginx配置文件,指定请求返回码对应的页面, .netframework项目中修改webconfig文件,指定customerro ...
- Appium+python自动化(三十七)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 下(超详解)
简介 接着上一篇继续看一下如何并发测试以及并发测试的过程中,可能遇到的问题,在这里宏哥把宏哥遇到的和小伙伴或者童鞋们,一起分享一下. Appium端口检测 问题思考 经过前面学习,我们已经能够使用py ...
- airflow使用本地时区
在airflow中使用的时间是utc时间,而更多时候我们希望的是使用本地时间,于是在定义airflow定时任务的时候,涉及到了时间的转换. 1.python中本地时间和utc时间的转换 查看国内可 ...
- 类似Flag counter被园子禁用后的备选方案
背景介绍 2019年9月4日,园子发生严重事故,影响范围为整个园子.随着bug的修复,从个人博客无法访问——>公告栏部分功能禁用——>文件无法上传(多个文章中的图片均加载不出来)——> ...
- 从原理到场景 系统讲解 PHP 缓存技术
第1章课程介绍 此为PHP相关缓存技术的课堂,有哪些主流的缓存技术可以被使用? 第1章 课程介绍 1-1课程介绍1-2布置缓存的目的1-3合理使用缓存1-4哪些环节适合用缓存 第2章 文件类缓存 2- ...
- Hadoop 之 HDFS基本概念
1.HDFS的基本概念 答:块(Block).NameNode.DataNode.HDFS的文件被分成块进行存储,默认块的大小为64M,所以说块是文件存储和处理的逻辑单元.NameNode是管理节点, ...
- 【linux】【jenkins】自动化部署一 安装jenkins及Jenkins工作目录迁移
系统环境:Centos7 https://jenkins.io/zh/download/ 下载对应系统的jenkins 一.安装jdk8.0 jenkins安装需要jdk8or11,根据jenkins ...