Spring Boot从入门到精通-注解详解
时间:2022-06-21
本文章向大家介绍Spring Boot从入门到精通-注解详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
说起注解,就不得不说到三个最基本的注解:
- Target:声明注解用于什么地方,用的最多的是注解在类上(@Target({ElementType.TYPE}))和方法(@Target({ElementType.METHOD}))上。
- Retention:定义该注解的生命周期 RetentionPolicy这个枚举类型的常量描述保留注释的各种策略,它们与元注释(@Retention)一起指定注释要保留多长时间。
public enum RetentionPolicy {
/**
* Annotations are to be discarded by the compiler.
*/
SOURCE,
/**
* Annotations are to be recorded in the class file by the compiler
* but need not be retained by the VM at run time. This is the default
* behavior.
*/
CLASS,
/**
* Annotations are to be recorded in the class file by the compiler and
* retained by the VM at run time, so they may be read reflectively.
*
* @see java.lang.reflect.AnnotatedElement
*/
RUNTIME
}
-Documented:Documented注解表明这个注释是由 javadoc记录的。 以上是三个公共注解,基本上所有的注解都会继承这三个注解。
接下来是Spring Boot中常用的一些注解。
- @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
- @Configuration:等同于spring的XML配置文件;使用Java代码可以检查类型安全。
- @AutoConfigureAfter:指定在某个类被spring装载后装载。
- @EnableAutoConfiguration:自动配置。
- @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
- @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。
- @RestController:@ResponseBody和@Controller的合集。
- @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。
- @ComponentScan:表示将该类自动发现扫描组件。如果扫描到有@Component、@Controller、@Service、@Autowired、@Configuration等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件。
- @Inject:等价于默认的@Autowired,只是没有required属性。
- @Service:一般用于修饰service层的组件。
- @Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
- @Bean:用@Bean标注方法等价于XML中配置的bean。
- @Scope("prototype"): 声明bean初始化类型,默认为单例。
- @PostConstruct:初始化bean执行的方法。
- @PreDestory:销毁bean前执行的方法。
- @Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。
- @Value:注入Spring boot application.yml配置的属性的值。
- @ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
- @EnableTransactionManagement:开启事务管理,确保在启动类中@component扫描到该类。
- @Transactional:事务在service层中的使用。
以上是我们常用的一些注解的含义,当然我们也可以自定义注解。 在下一节中我们会将已经写好的接口与数据库进行交互,实现一个简单的从浏览器到数据库之间完整的交互。Spring Boot从入门到精通-数据库连接
- Flask的集中控制
- 64位IIS(IIS6/IIS7)上跑Asp + Jet.Oledb的设置要点
- windows 2003 32位系统能支持的最大内存数
- .Net Core内存回收模式及性能测试对比
- silverlight中顺序/倒序异步加载多张图片
- MySQL数据库性能优化之三
- 谁说 Java 要过时?2017年Java 大事件一览及未来前瞻
- mongodb的用法
- silverlight中如何将string(字符串)写入Resource(资源)?
- Python练习环境搭建-引入预定义数据
- 振幅和成交量的关系
- silverlight中的几个冷门标记 {x:Null},d:DesignWidth,d:DesignHeight
- 用scikit-learn和pandas学习线性回归
- 自动驾驶玩出新花招,以后老司机们就要失业了
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 帝国CMS怎么利用灵动标签循环调用多个栏目下的文章
- PHP 加密 Password Hashing API基础知识点
- php libevent 功能与使用方法详解
- 对Python3中bytes和HexStr之间的转换详解
- 用python代码将tiff图片存储到jpg的方法
- php下的原生ajax请求用法实例分析
- php 中的信号处理操作实例详解
- php多进程中的阻塞与非阻塞操作实例分析
- 解决android viewmodel 数据刷新异常的问题
- Python装饰器简单用法实例小结
- 解决Python一行输出不显示的问题
- 浅谈python中str字符串和unicode对象字符串的拼接问题
- android利用剪切板传递数据
- gearman中worker常驻后台,导致MySQL server has gone away的解决方法
- php 使用html5 XHR2实现上传文件与进度显示功能示例