在spring boot中,摒弃了spring以往项目中大量繁琐的配置,遵循约定大于配置的原则,通过自身默认配置,极大的降低了项目搭建的复杂度。同样在spring boot中,大量注解的使用,使得代码看起来更加简洁,提高开发的效率。这些注解不光包括spring boot自有,也有一些是继承自spring的。
本文中将spring boot项目中常用的一些核心注解归类总结,并结合实际使用的角度来解释其作用。
使用注解的优势:
1.采用纯java代码,不在需要配置繁杂的xml文件
2.在配置中也可享受面向对象带来的好处
3.类型安全对重构可以提供良好的支持
4.减少复杂配置文件的同时亦能享受到springIoC容器提供的功能
1.@SpringBootApplication:描述的类为spring boot项目的启动入口类,有且只有一个
包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解
@Configuration:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类@EnableAutoConfiguration :开启Spring Bootde 自动配置功能@ComponentScan :主要用于组件扫描和自动装配2. Spring Bean 相关
@Autowried 自动导入对象到类中,被注入进的类同样要被 Spring 容器管理@Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。3.Scope
singleton:@Scope("singleton")单例作用域,此作用域的对象在内存中只存在一份,通过共享设计(池),实现对象的可重用性。 此对象何时创建由懒加载(Lazy)特性设计决定,是否可以被销毁由spring框架决定(一般在容器销毁时销毁),适合应用频度比较高的对象prototype:@Scope("prototype")多例作用域,此作用域的对象在需要时创建,和懒加载特性无关,每次从容器获取都是一个新的对象,但spring框架不负责销毁,适合应用频度比较低的对象request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。@Lazy(Spring的注解):作用主要是减少springIOC容器启动的加载时间
value 取值有true和false两个 ,默认值为 true
true 表示使用 延迟加载,通常会配合单例作用域使用。 false 表示不使用,false 纯属多余,如果不使用,不标注该注解就可以了。
@PostConstruct(Java的注解):@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。
@PreDestroy(Java的注解):被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。