SpringBoot常用注解

释放双眼,带上耳机,听听看~!

目录

 

前言:

常用注解总结

@SpringBootApplication 

@ServletComponentScan 

@Component

@Bean

@Configuration

@ConfigurationProperties

@Value

@SpringBootConfiguration

@Conditional

 @ConditionalOnBean

@ConditionalOnMissingBean

 @MapperScan

@ImportResource @Import @PropertySource 这三个注解都是用来导入自定义的一些配置文件。

@Controller 

@RestController 

@RequestMapping(value="",method= RequestMethod.GET )

@CrossOrigin(origins = "", maxAge = 1000) 

@Autowired

@EnableCaching

@PathVariable

@Service

@Resource

@Repository

@Transactional

@Qualifier

@Async与@EnableAsync

@Scheduled与@EnableScheduling

@ControllerAdvice

@ExceptionHandler

@PostContruct

参考文章


前言:

小编今天想总结一下SpringBoot常用注解。(个人版本)

常用注解总结

**@SpringBootApplication **

@SpringBootApplication是一个复合注解,包含@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan这三个注解。
标注当前类是一个配置类。

这三个注解的作用分别为:

  • @SpringBootConfiguration:标注当前类是配置类,这个注解继承自@Configuration。并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

  • @EnableAutoConfiguration:是自动配置的注解,这个注解会根据我们添加的组件jar来完成一些默认配置,我们做微服时会添加spring-boot-starter-web这个组件jar的pom依赖,这样配置会默认配置springmvc 和tomcat。

  • @ComponentScan:扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。等价于context:component-scan的xml配置文件中的配置项

**@ServletComponentScan **

Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,这样通过注解servlet ,拦截器,监听器的功能而无需其他配置,所以这次相中使用到了filter的实现,用到了这个注解。

**   SpringBoot常用注解 **

@Component

** 一般注解在类上,把普通类实例化到spring容器中。可以说很多注解都是基于这个注解的。**

@Bean

一般标记在方法上,用@Bean标注方法等价于XML中配置bean,这个方法一般返回一个实体对象,告诉spring这里产生一个对象,然后这个对象会交给Spring管理。产生这个对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的容器中

@Configuration

**   这是Spring3.0一个注解,用来代替 applicationContext.xml 配置文件,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。(其实就是靠@Component注解)**

@ConfigurationProperties

将配置文件中的参数映射成一个对象,通过prefix来设定前缀,然后将后面的和对象的属性名一致就能实现注入(当然这个对象需要注入的属性需要提供get和set方法 – – – 因为spring底层其实就是通过反射调用该对象的set方法)

实例:
@ConfigurationProperties(prefix = “spring.datasource.test1”)
public class Datasource1 {
private String url;
private String username;
private String password;
get – – set方法
}
application.properties:
spring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test1.username=root
spring.datasource.test1.password=root
spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver

@Value

value的作用其实和ConfigurationProperties作用差不多,就是读取配置文件中参数的值,但是value是放在变量上面的,且是单值读取,还有一点就是value标注的变量并不需要和配置文件的参数名字一致。

语法:
@Value(“${参数}”)
private String 变量名字
application.properties:
参数=值
注意:配置文件中的参数和value表达式中的参数名字是要保持一致的

@SpringBootConfiguration

**这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或>者可利于 Spring Boot 后续的扩展。 **

@Conditional

这是 Spring 4.0 添加的新注解,用来标识一个 Spring Bean 或者 Configuration 配置文>件,当满足指定的条件才开启配置。

** @ConditionalOnBean**

** 组合 @Conditional 注解,当容器中有指定的 Bean 才开启配置。**

@ConditionalOnMissingBean

组合 @Conditional 注解,和 @ConditionalOnBean 注解相反,当容器中没有指定的 Bean 才开启配置。

** @MapperScan**

@MapperScan:spring-boot支持mybatis组件的一个注解,通过此注解指定mybatis接口类的路径,即可完成对mybatis接口的扫描。

@ImportResource @Import @PropertySource 这三个注解都是用来导入自定义的一些配置文件。

  • @ImportResource(locations={}) 导入其他xml配置文件,需要标准在主配置类上。导入property的配置件
  • ** @PropertySource指定文件路径,这个相当于使用spring的<importresource/>标签来完成配置项的引入。**
  • @import注解是一个可以将普通类导入到spring容器中做管理

**@Controller  **

表示当前是一个控制类,一般情况下与RequestMapping @ReponseBody 结合使用。

**@RestController **

:是@Controller 和@ResponseBody的结合,一个类被加上@RestController 注解,数据接口中就不再需@ResponseBody。

** 返回的直接是json数据。**

** 举个栗子:**

SpringBoot常用注解

**   **

**@RequestMapping(value="",method= RequestMethod.GET

)**

** 一开始的时候我们经常使用@RequestMapping 这个注解用来定义接口和请求方式,这样的写法挺繁琐,Restful方式的写法应运而生。**

 

SpringBoot常用注解

 

**@CrossOrigin(origins = "", maxAge = 1000) **

这个方式是为了解决跨域问题而产生的,可以为整个Controller配置启动跨越也可以在方法级别启用。

@Autowired

是spring的自动装配,这个注解可以用到构造器,变量域,方法,注解类型上。

当我们需要从bean 工厂中获取一个bean时,Spring会自动为我们装配该bean中标记为@Autowired的元素。

@EnableCaching

这个注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。其作用相当于spring配置文件中的cache manager标签。

@PathVariable

这个是路径变量注解。一般情况可以用这个注解获取接口后面的参数

**举个例子:下面这是一个简单的接口,   在浏览上访问这个接口  http://localhost:8080/testApi/13,此时我在这个接口里面就能获取到13这个值。  **


1
2
3
4
5
6
7
1@RequestMapping(value=&quot;testApi/{id}&quot;)
2
3public void testUrl(@PathVariable(&quot;id&quot;) int id){
4
5
6}
7

@Service

一般情况下我们会将业务逻辑类加上这个注解交由Spring管理,事务的切面也会配置在这一层。

@Resource

@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。 @resource注解不是spring提供的,是属于J2EE规范的注解。两个之前的区别就是匹配方式上有点不同,@Resource默认按照名称方式进行bean配,@Autowired默认按照类型方式进行bean匹配。

举个例子:

@Resource(type = ShiroService.class, name = "shiroService") private ShiroService shiroService;

@Repository

@Repository注解类作为DAO对象,管理操作数据库的对象。

总得来看,@Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理

@Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能。通过这些注解的分层管理,就能将请求处理,义务逻辑处理,数据库操作处理分离出来,为代码解耦,也方便了以后项目的维护和开发。

所以我们在正常开发中,如果能用@Service, @Controller, @Repository其中一个标注这个类的定位的时候,就不要用@Component来标注。

@Transactional

@Transactional: 通过这个注解可以声明事务,可以添加在类上或者方法上。

在spring boot中 不用再单独配置事务管理,一般情况是我们会在servcie层添加了事务注解,即可开启事务。要注意的是,事务的开启只能在public 方法上。并且主要事务切面的回滚条件。正常我们配置rollbackfor exception时 ,如果在方法里捕获了异常就会导致事务切面配置的失效。

@Qualifier

@Autowired是根据类型进行自动装配的。如果当spring上下文中存在不止一个A类型的bean时,就会抛出 BeanCreationException异常;如果Spring上下文中不存在A类型的bean,而且我们又使用A类型,也会抛出BeanCreationException异常。针对存在多个A类型的Bean,我们可以联合使用@Qualifier和@Autowired来解决这些问题。


1
2
3
4
5
6
1@Autowried
2
3@Qualifier(&quot;adminDAO&quot;)
4
5private AdminDAO adminDAO;
6

@Async与@EnableAsync

其中@Async表示这个方法为异步方法;@EnableAsync这个注解需要加在启动类上,表示支持异步操作;默认不起作用。

@Scheduled与@EnableScheduling

** @EnableScheduling这个注解需要加在启动类上,表示支持定时任务。**

@ControllerAdvice

包含@Component。可以被扫描到。统一处理异常。

@ExceptionHandler

用在方法上面表示遇到这个异常就执行以下方法

@PostContruct

在构造器后执行,相当于 @Bean 的 initMethod

参考文章

https://www.cnblogs.com/nihaorz/p/10528121.html

**https://blog.csdn.net/tuesdayma/article/details/81029539** 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全资讯

谷歌新款真无线耳机泄露 主打高音质

2021-8-16 15:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索