Spring相关注解

  • 功能型注解Enable*开启对XX的支持

@EnableAspectJAutoProxy:开启对AspectJ自动代理的支持

@EnableTransactionManagement:开启注解式事务的支持

@EnableCaching:开启注解式的缓存支持

@EnableAsync:开启异步方法的支持

@EnableScheduling:开启计划任务的支持

@EnableWebMvc:开启Web MVC的配置支持

@EnableJpaRepositories:开启对SpringData JPA Repository的支持

@EnableFeignClients:启用feign客户端(Spring Cloud)

  • 给容器中注入组件

@Component:泛指各种组件,通用注解

@Controller、 @Service、 @Repository都可以称为@Component

@Controller:是 Spring-MVC 的注解,具有请求、转发及重定向的功能

@Service:该注解只是标记该类处于业务逻辑层

@Repostory:主要作用于持久层,能将数据库操作抛出的原生异常转换为 spring 持久层异常

@Import:用来导入配置类或者一些需要前置加载的类

@ImportSelector:返回需要导入的组件的全类名数组

@ImportBeanDefinitionRegistrar:手动注册bean到容器中

  • Java配置类相关注解

@PropertySource:用于引入其他的 properties 配置文件

@Configuration:声明当前类为配置类,配置bean单例池

@Bean:注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式

@DependsOn:该注解可以配置Spring IoC容器在初始化一个Bean之前,先初始化其他的Bean对象

@PostConstruct:初始化方法,由JSR-250提供,在构造函数执行完之后执行,等价于xml配置文件中bean的initMethod

@PreDestory:销毁方法,由JSR-250提供,在Bean销毁之前执行,等价于xml配置文件中bean的destroyMethod

@ComponentScan:扫描指定包下的所有Spring Bean组件。

  • 环境切换

@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件

@Conditional:通过实现Condition接口,并重写matches方法,从而决定该bean是否被实例化

  • @Bean的属性支持

@Scope:设置Spring容器如何新建Bean实例,比如@Scope(value = "prototype")

其设置类型包括:

Singleton:单例,一个Spring容器中只有一个bean实例,默认模式

Protetype:每次调用新建一个bean

Request:web项目中,给每个http request新建一个bean

Session:web项目中,给每个http session新建一个bean

GlobalSession:给每一个 global http session新建一个Bean实例

  • 切面(AOP)相关注解

@Aspect:声明一个切面

@After:在方法执行之后执行(方法上)

@Before:在方法执行之前执行(方法上)

@Around:在方法执行之前与之后执行(方法上)

@PointCut:声明切点:

  1. execution():用于匹配方法执行的连接点
  2. args():用于匹配当前执行的方法传入的参数为指定类型的执行方法
  3. this():用于匹配当前AOP代理对象类型的执行方法,注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配
  4. target():用于匹配当前目标对象类型的执行方法,注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配
  5. within():用于匹配指定类型内的方法执行
  6. @args():用于匹配当前执行的方法传入的参数持有指定注解的执行
  7. @target():用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解
  8. @within():用于匹配所以持有指定注解类型内的方法
  9. @annotation:用于匹配当前执行方法持有指定注解的方法

AspectJ类型匹配的通配符:

  1. * 匹配任何数量字符;
  2. . . 匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。
  3. +匹配指定类型的子类型;仅能作为后缀放在类型模式后边。

  • 异步相关

@EnableAsync:配置类中通过此注解开启对异步任务的支持

@Async:在实际执行的bean方法使用该注解来声明其是一个异步任务(方法上或类上所有的方法都将异步)

  • 定时任务相关

@EnableScheduling:在配置类上使用,开启计划任务的支持(类上)

@Scheduled:来申明这是一个任务,包括cron,fixDelay,fixRate等类型

  • 缓存相关

@Cacheable:用来标记缓存查询。可用于方法或者类中

@CacheEvict:用来标记要清空缓存的方法,当这个方法被调用后,即会清空缓存

  • 测试相关

@RunWith:就是一个运行器@RunWith(JUnit4.class)就是指用JUnit4来运行

@SuppressWarnings:是J2SE提供的一个批注。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默

  • 依赖注入

@Required:注入 bean 时,要求bean 不能为null,否则抛BeanInitializationException

@Value:注入普通字符、操作系统属性、表达式结果、其它bean属性、文件资源及配置文件

@Autowired:注入一个 bean。用来装配bean,都可以写在字段上,或者方法上

@Qualifier:当有多个相同类型的bean 冲突时,用来指定具体的bean 名称进行注入

@Primary: 优先级最高的,如果同时有@Primary以及其他几个的话,@Primary注解的Bean会优先加载

@Priority是JSR 250标准,同样是值越小优先级越高。但是两者还是有一定却别,@Priority能够控制组件的加载顺序,因此@Priority侧重于单个注入的优先级排序。此外@Priority优先级比@Order更高,两者共存时优先加载@Priority。

@Order:定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响

  • 异常处理

@ControllerAdvice: @Component注解的一个延伸注解,Spring会自动扫描并检测被@ControllerAdvice所标注的类。@ControllerAdvice需要和@ExceptionHandler、@InitBinder以及@ModelAttribute注解搭配使用,主要是用来处理控制器所抛出的异常信息。

@ExceptionHandler: 该注解用于标注处理特定类型异常类所抛出异常的方法。当控制器中的方法抛出异常时,Spring会自动捕获异常,并将捕获的异常信息传递给被@ExceptionHandler标注的方法。

@InitBinder:用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中

@ModelAttribute:如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法。可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。比如权限的验证(也可以使用Interceptor)等,如果使用@ModelAttribute对方法进行标注,Spring会将方法的返回值绑定到具体的Model上

  • 其它注解说明

@Transactional:配置事务

@Transient:如果一个属性并非数据库表的字段映射,就务必将其标示为@javax.persistence.Transient

@Lazy:表示延迟注入bean。

@EqualsAndHashCode:任意类的定义都可以添加@EqualsAndHashCode注解,让lombok帮你生成equals(Object other)和hashCode()方法的实现。默认情况下会使用非静态和非transient型字段来生成

@JsonIgnore:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响

@JsonFormat:此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式

@ContextConfiguration:用Spring整合JUnit4测试时,使用注解引入多个配置文件

比如:

@ContextConfiguration(Locations=”classpath:applicationContext.xml”)

@ContextConfiguration(classes = SimpleConfiguration.class)

  • SpringMVC常用注解

@RestController:该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody

@RequestMapping:用于映射web请求,包括访问路径和参数

@RequestBody:允许request的参数在request体中,而不是在直接连接的地址后面

@ResponseBody: 该注解只能用在被@Controller注解标记的类中。如果在被@RestController标记的类中,则方法不需要使用@ResponseBody注解进行标注。

@RequestParam: 注解用于将方法的参数与Web请求的传递的参数进行绑定。使用@RequestParam可以轻松的访问HTTP请求参数的值

@PathVariable:该注解是将方法中的参数绑定到请求URI中的模板变量上。可以通过@RequestMapping注解来指定URI的模板变量,然后使用@PathVariable注解将方法中的参数绑定到模板变量上,模板变量名需要使用{ }进行包裹,如果方法的参数名与URI模板变量名一致,则在@PathVariable中就可以省略别名的定义

  • Spring Boot注解

Spring Boot功能型注解

@SpringBootApplication:该注解是一个快捷的配置注解,自动触发自动配置Bean和自动扫描组件。该注解包含@SpringBootConfiguration(@Configuration)、@EnableAutoConfiguration及@ComponentScan。

@EnableAutoConfiguration:开启Spring Boot自动配置装配,到classpath下的读取META-INF/spring.factories文件的配置并返回一个字符串数组。在启动过程中会解析对应类配置信息,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器

只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置。

其内部实现的关键点有:

1、ImportSelector 该接口的方法的返回值都会被纳入到spring容器管理中

2、SpringFactoriesLoader 该类可以从classpath中搜索所有META-INF/spring.factories配置文件,并读取配置

@EnableConfigurationProperties:注解在类上,声明开启属性注入,使用@Autowired注入。例:@EnableConfigurationProperties(HttpEncodingProperties.class)。

@AutoConfigureAfter:在指定的自动配置类之后再配置。例:@AutoConfigureAfter(WebMvcAutoConfiguration.class)。

@ConfigurationProperties:将properties属性与一个Bean及其属性相关联,从而实现类型安全的配置。

条件注解

@Conditional:该注解可以控制更为复杂的配置条件。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。

@ConditionalOnBean:当容器里有指定Bean的条件下。

@ConditionalOnClass:当类路径下有指定的类的条件下。

@ConditionalOnExpression:基于SpEL表达式作为判断条件。

@ConditionalOnJava:基于JVM版本作为判断条件。

@ConditionalOnJndi:在JNDI存在的条件下查找指定的位置。

@ConditionalOnMissingBean:当容器里没有指定Bean的情况下。

@ConditionalOnMissingClass:当类路径下没有指定的类的情况下。

@ConditionalOnNotWebApplication:当前项目不是web项目的条件下。

@ConditionalOnResource:类路径是否有指定的值。

@ConditionalOnSingleCandidate:当指定Bean在容器中只有一个,后者虽然有多个但是指定首选的Bean。

@ConditionalOnWebApplication:当前项目是web项目的情况下。

@ConditionalOnProperty:注解会根据Spring配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的方法。

@ConditionalOnResource:此注解用于检测当某个配置文件存在使,则触发被其标注的方法。

@ConditionalExpression:此注解可以让我们控制更细粒度的基于表达式的配置条件限制。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值