spring5的注解springboot2.x注解全系列总结

一、前言

springmvc注解参考我之前发的文章。跳转。。。

本文涵盖所有常用和不常用的注解,为本人一点点归纳

二、jakarta.annotation-api-1.3.5.jar包下的注解

bean的注解版型。

注解应用
* @Component最普通的组件,可以被注入到spring容器进行管理
* @Controller作用于表现层(spring-mvc的注解),具有将请求进行转发,重定向的功能。
@Indexed为Component的基础注解,为Spring的模式注解添加索引,以提升应用启动性能。
* @Repository作用于持久层,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
* @Service作用于业务逻辑层,是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层

2.1 @Autowired和@Resource的对比

@Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上。
@Autowired属于Spring2.5引入的,@Resource为JSR-250标准的注释,属于J2EE的。

  • 共同点
    @Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。

  • 不同点
    @Resource是Java自己的注解,@Resource有两个属性是比较重要的,分是name和type;Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
    @Autowired是spring的注解,是spring2.5版本引入的,Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。

三、javax.annotation-api-1.3.2.jar包下的注解

注解应用
@Generated用来标注源代码中的某些东西是由某些工具生成的,而不是人写的。
@ManagedBean*
* @PostConstruct贴在方法上,标明 bean 创建完后调用此方法。
* @PreDestroy贴在方法上,标明容器销毁时调用此方法。
@Priority它有个int类型的属性value,可以配置优先级大小。数字越小的,就被优先匹配。
* @Resource以用来装配bean,默认使用byName自动注入策略。备注:@Autowired默认使用byType自动注入策略。
@Resources多个Resource的集合

四、spring-beans-5.2.2.RELEASE.jar包下的注解

注解应用
* @Autowired以用来装配bean,默认使用byType自动注入策略。备注: @Resource 默认使用byName自动注入策略
@Configurable手动new出来的对象,正常情况下,Spring是无法依赖注入的,这个时候可以使用@Configurable注解
@Lookup@Lookup注解的方法会告诉Spring,当我们调用这个方法时,Spring会返回一个方法返回值类型的实例。
* @Qualifier使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义
* @Required检查一个Bean的属性的值在配置期间是否被赋予或设置, 解决@Autowired在项目启动时候注入为null报错
* @Value通过注解将常量、配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。

五、spring-boot-autoconfigure-2.2.2.RELEASE.jar包下的注解

注解应用
@AutoConfigurationPackage添加该注解的类所在的package 作为 自动配置package 进行管理
@AutoConfigureAfter在加载配置的类之后再加载当前类, 一般配合着@import注解使用 ,在使用import时必须要让这个类先被spring ioc 加载好
注意spring只对spring.factory文件下的配置类进行排序
@AutoConfigureBefore在加载配置的类之前再加载当前类
@AutoConfigureOrder对自动配置类进行排序
@EnableAutoConfiguration开启自动配置,将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。
Spring Boot会自动根据你jar包的依赖来自动配置项目
@ImportAutoConfiguration@ImportAutoConfiguration是@Import的增强,限制了它使用的特定范围。
@ImportAutoConfiguration与@EnableAutoConfiguration的功能更相似,而且能够更细粒度的控制导入的类。
@SpringBootApplication@SpringBootApplication是一个复合注解,包括@ComponentScan,和@SpringBootConfiguration,@EnableAutoConfiguration
以下所有注解都是 组合 @Conditional 注解
@ConditionalOnBean当容器中有指定的 Bean 才开启配置。
@ConditionalOnClass当容器中有指定的 Class 才开启配置。
@ConditionalOnCloudPlatform当指定的云平台激活时才开启配置。
@ConditionalOnExpression当 SpEL 表达式为 true 时才开启配置
@ConditionalOnJava当运行的 Java JVM 在指定的版本范围时才开启配置。
@ConditionalOnJndi当指定的 JNDI 存在时才开启配置
@ConditionalOnMissingBean和 @ConditionalOnBean 注解相反,当容器中没有指定的 Bean 才开启配置。
@ConditionalOnMissingClass和 @ConditionalOnMissingClass 注解相反,当容器中没有指定的 Class 才开启配置。
@ConditionalOnNotWebApplication和 @ConditionalOnWebApplication 注解相反,当前项目类型不是 WEB 项目才开启配置。
@ConditionalOnProperty当指定的属性有指定的值时才开启配置。
@ConditionalOnResource当类路径下有指定的资源才开启配置。
@ConditionalOnSingleCandidate当指定的 class 在容器中只有一个 Bean,或者同时有多个但为首选时才开启配置。
@ConditionalOnWebApplication当前项目类型是 WEB 项目才开启配置。

六、spring-context-5.2.2.RELEASE.jar包下的注解

注解应用
* @Bean@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理,需要在@Configuration注解下进行创建
* @ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。
* @ComponentScans用来指定spring注册bean的时候需要扫描的包或者类, 为@ComponentScan数组形式
* @Conditional按照一定的条件进行判断,满足条件给容器注册bean
* @Configuration用于定义一个配置类
* @DependsOn表示一个bean A的实例化依赖另一个bean B的实例化
@Description
@EnableAspectJAutoProxy在配置类上添加@EnableAspectJAutoProxy注解,开启注解版的AOP功能
@EnableLoadTimeWeaving运行时织入和装载时织入???
@EnableMBeanExportJMX模块
@Import@Import注解把用到的bean导入到了当前容器中,注解是用来导入配置类或者一些需要前置加载的类
@ImportResource通过@ImportResource实现xml配置的装载
@Lazy容器一般都会在启动的时候实例化所有单实例bean 。如果我们想要 Spring 在启动的时候延迟加载 bean,即在调用某个 bean 的时候再去初始化,那么就可以使用 @Lazy 注解。
@Primary当注入bean冲突时,以@Primary定义的为准
@Profile指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件
@PropertySource@PropertySource 注解加载指定的配置文件,@PropertySource(value = {“classpath:user.yml”}
@PropertySources注解加载指定的配置文件,为 @PropertySource 的数组形式
@Role配置角色,感觉没有啥用
@Scope配置作用@Scope默认是单例模式,singleton单例模式,prototype原型模式,request,session,global session
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot 3.x中进行单元测试的步骤如下: 1. 首先,在你的项目中,创建一个单元测试类。你可以通过在测试文件夹中创建一个新的Java类来完成这一步骤。 2. 在单元测试类中,添加所需的测试代码。你可以使用JUnit框架提供的断言方法来验证代码的正确性。你可以在测试方法上使用`@Test`注解来标记它们是测试方法。 3. 在单元测试类上,添加`@SpringBootTest`注解。这个注解告诉Spring Boot将运行这个测试类,并且会加载整个应用程序上下文。 4. 运行单元测试。你可以在你的开发环境中使用相应的工具或IDE来运行单元测试,也可以使用构建工具如Maven或Gradle来运行单元测试。 下面是一个简单的示例,展示了一个使用Spring Boot进行单元测试的类: ```java @SpringBootTest class MyUnitTest { @Autowired private MyService myService; @Test void testSomething() { // 测试代码 // 使用断言验证结果 assertEquals("expected", myService.doSomething()); } } ``` 在这个示例中,我们使用了`@SpringBootTest`注解来加载应用程序上下文,并使用`@Autowired`注解来注入需要测试的服务。然后,在`testSomething()`方法中,我们编写了测试代码,并使用`assertEquals()`方法进行断言验证。 注意,这只是一个简单的示例,你可以根据你的项目需求编写更复杂的单元测试。 总结起来,使用Spring Boot进行单元测试的步骤包括:创建单元测试类,添加测试代码,使用`@SpringBootTest`注解标记测试类,运行单元测试。记得在测试代码中使用断言方法来验证结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值