Spring注入的问题

来源:互联网 发布:爬虫技术教程 php视频 编辑:程序博客网 时间:2024/06/05 17:37

个人总结:Spring中是通过注入将java类注入到容器中,其注入的优点有两个:

1、我理解是当我用接口的时候,如果接口的实现类变了,我只要改配置文件,java代码不需要改变,即所谓的IOC特性,在实例化时只需实例化接口即可,具体调用哪个方法,只有通过配置文件在运行的时候指定;

2、Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。个人理解为通过注入的方式减少了用new创建对象,只需在使用时通过@Resource或applicationContext.getBean获取实例对象即可。

@Resource的作用:

@Resource是相当于applicationContext.getBean方法!
这总体来说,是Spring依赖注入的两种写法,一种是注释的@Resource,一种是XML的写法。
前提是,只要你已经用@Component注释了需要注入的对象,或者已经在XML文件中使用 bean 配置了需要注入的对象,你就可以用 @Resource或者 applicationContext.getBean方法去注入这个对象!所以这两个,你可以任选一个。实际应用中,我们都是用@Resource这个办法。极少使用applicationContext.getBean方法。当然,使用@Resource注入的时候,还需要在XML中配置自动扫描的包哦,一般我们用Junit测试时候都用applicationContext.getBean方法去注入,而不用@Resource是因为我们的XML没有配置也扫描Junit的包。

Spring中什么时候用@Resource,什么时候用@service
当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于讲这个类定义为一个beanbean名称为XXX;
当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name="xxx"),相当于为该属性注入一个名称为xxxbean

0 0
原创粉丝点击