java spring总结-常用注解

时间:2025-08-28 17:48:02来源:互联网

下面小编就为大家分享一篇java spring总结-常用注解,具有很好的参考价值,希望对大家有所帮助。

@Resource

不用写set和get方法

@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

在spring的配置文件中

说明:

  • 启动spring容器
  • spring容器内部创建了两个对象person和student
  • 当spring容器解析到

<context:annotation-config />

启动依赖注入的注解解析器:

  • spring容器在容器中查找所有的bean(prerson,student)
  • 看哪些bean的属性上面是否有注解
  • 如果属性上面有该注解,再次检查是否有name属性
  • 如果没有name属性,则会把该注解标注的属性的名称获取到和spring容器中的bean标签中的id做匹配,如果匹配成功,则赋值,如果匹配不成功,则按照类型(即属性类型与xml中class指定的类)进行匹配,如果匹配成功,则赋值,如果匹配不成功,则报错。
  • 如果有name属性,则把name属性的值解析出来和spring容器中的id做匹配,如果匹配成功,则赋值,如果匹配不成功,则报错。
  • 从上述的步骤可以看出注解的效率比较低,xml的效率比较高,注解书写比较简单,xml书写比较复杂。

@Autowired

按照类型匹配

在默认情况下使用 @Autowired

注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个

required 属性默认是true,表示注入的时候,该bean必须存在,否则就会报错(BeanCreationException 异常)。修改为ffalse后在找不到匹配 Bean 时也不报错。

@Qualifier

按照ID匹配,注解只能应用于引用类型

 

@Transactional 注解

说明

1、作用范围
1)方法:推荐将注解使用于方法上,不过需要注意的是:该注解只能应用到 public 方法上,否则不生效。
2)类:如果这个注解使用在类上的话,表明该注解对该类中所有的 public 方法都生效。
3)接口 :不推荐在接口上使用。

 

@Transactional 的常用配置参数:

 原理

@Transactional 的工作机制是基于 AOP 实现的,AOP 又是使用动态代理实现的。如果目标对象实现了接口,默认情况下会采用 JDK 的动态代理,如果目标对象没有实现了接口,会使用 CGLIB 动态代理。

如果一个类或者一个类中的 public 方法上被标注@Transactional 注解的话,Spring 容器就会在启动的时候为其创建一个代理类,在调用被@Transactional 注解的 public 方法的时候,实际调用的是,TransactionInterceptor 类中的 invoke()方法。这个方法的作用就是在目标方法之前开启事务,方法执行过程中如果遇到异常的时候回滚事务,方法调用完成之后提交事务。

事务失效情况

如果同一个类中的其他没有@Transactional注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务会失效。
本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!