Spring常见注解总结 总结

接触了公司的项目代码后发现,现在基本上用SSM框架的都是全注解注入开发,之前自学SSM时做的小项目都是XML配置注入。maven都用了,还不用注解?开发效率太低喽。

关于注解开发的好处可以参考介个链接。https://blog.csdn.net/wxw520zdh/article/details/52733667

所以最近学习了注解开发,下面是我整理的一些内容。
1.定义Bean的注解

@Repository、@Service、@Controller 这几个是一种类型,其实@Component 跟他们也是一个类型的

Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释。
@Service用于标注业务层组件(我们通常定义的service层就用这个)

@Controller用于标注控制层组件(如struts中的action,spring中的controller)

@Repository用于标注数据访问组件,即dao层

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
这几个注解是当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于表示这个类定义为一个bean,bean名称为XXX; 这几个是基于类的。

我们可以定义名称,也可以不定义,不定义会默认以类名为bean的名称(类首字母小写)。

2.自动装配bean的类型

@Resource、@Autowired、@Qualifier

当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值我们就会用到三个。
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Autowired//默认按type注入
@Qualifier("cusInfoService")//一般作为@Autowired()的修饰用
@Resource(name="cusInfoService")//默认按name注入,可以通过name和type属性进行选择性注入

一般@Autowired和@Qualifier一起用,@Resource单独用。

当然没有冲突的话@Autowired也可以单独用

2.2@Autowired  (Spring提供的)

默认按类型匹配,自动装配(Spring提供的),可以写在成员属性上,或写在setter方法上

@Autowired(required=true)  

一定要找到匹配的Bean,否则抛异常。 默认值就是true 

@Autowired

@Qualifier("bean的名字") 

按名称装配Bean,与@Autowired组合使用,解决按类型匹配找到多个Bean问题。

其实spring开发注解,最常用的还是根据名称。根据类型和构造方法用的非常少。所以在多个实现的时候我们定义bean的名称比较规范的话,一般不会错乱。

3.--定义Bean的作用域和生命过程

@Scope("prototype")

值有:singleton,prototype,session,request,session,globalSession

@PostConstruct 

相当于init-method,使用在方法上,当Bean初始化时执行。

@PreDestroy 

相当于destory-method,使用在方法上,当Bean销毁时执行。

--声明式事务

@Transactional  

整理自https://www.cnblogs.com/fengli9998/p/7472247.html

猜你喜欢

转载自blog.csdn.net/cao2219600/article/details/83381431