- @Autowired:自动装配,默认按照类型匹配的方式,在容器中查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中.
- @Qualifier:和@Autowired配合使用,当容器中有一个以上匹配的bean时,通过bean的id匹配对应的bean.
- @Resource:作用和@Autowired类似,都是用来自动装配的,不同点在于@Autowired默认通过type匹配,@Resource默认通过name匹配(也可以设置类型,当既设置了name又设置了type的时候,按顺序依次判断,要同时满足这两个条件),且应优先使用@Resource,因为@Resource属于J2EE,@Autowired属于Spring,使用@Resource可以减少与Spring的耦合.
- @Service/@Component/@Controller/@Repository:这几个都是用于替代<bean>标签的,默认在容器中的name为类名首字母小写,可以通过类似@Service("User")来自定义
- @Service:用于service层
- @Controller:用于controller层
- @Repository:用于dao层
- @Component:没有业务含义
- @Scope:表示创建对象是多例还是单例,默认是单例singleton,每次从容器中拿到的对象都是同一个,可以@Scope("prototype")配置为多例,每次从容器中获取对象都是new出一个新的.
- @Lazy:表示延迟加载
- @Transactional:事务,发生异常后回滚,
- @Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。
- 虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。
- 默认情况下,只有来自外部的方法调用才会被AOP代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional注解进行修饰。
posted @
2019-12-24 14:08
焦耳右螺旋
阅读(
135)
评论()
收藏
举报