对于Spring,人人都能说上来它的一些特点,也都会用个123,但是其实有很多细节,再加上每个公司的使用习惯不一样,所以一开始学习一个现成项目的框架时问题就暴露出来了,其实很多问题很细节,也不好意思问同事,上网找许多答案也答非所问,就自己总结下。
1,@Resources标签
来公司之前对Spring的自动封装也有一些了解,但是涉及的类也好,DAO也好,都是用@Autowried标签,那么这两个标签有什么区别呢?
从定义上讲,@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配
@Resource是J2EE的注解,引用路径为import javax.annotation.Resource;
@Autowired()是Spring的注解,引用路径为import org.springframework.beans.factory.annotation.Autowired;
自己公司项目比较大,使用的框架比较多时,应该使用Resources标签,因为Spring属于第三方,J2EE是Java自己的东西,使用@Resource可以减少代码和Spring之间的耦合。
那么Resources是如何利用名称来进行bean匹配的呢?举个例子,现在有一个接口Human,里面定义了speak,walk两个方法,他有两个实现类分别是ManImpl和WomanImpl,对这两个方法进行了自己的实现,而在Service层对Human进行了调用
接口Human