博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring-IOC
阅读量:5840 次
发布时间:2019-06-18

本文共 1549 字,大约阅读时间需要 5 分钟。

Spring-IOC(Inversion of Control ,控制反转或依赖注入)

1 理解Spring IOC

IOC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

其实IOC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IOC思想中,应用程序就变成被动的了,被动的等待IOC容器来创建并注入它所需要的资源了。

2 依赖注入通常有如下两种方式:

设值注入:IOC容器使用属性的Setter方法来注入被依赖的实例。

package com.cy.service.impl;import com.cy.bean.UserInfo;import com.cy.dao.IUserDao;import com.cy.service.IUserService;public class UserServiceImpl implements IUserService{   private IUserDao dao;    public void setUserDao(IUserDao dao){       this.dao=dao;   }    @Override    public void addUser(UserInfo user) {        dao.addUser(user);            }}

 

在ApplicationContext.xml中设置

1 
2
3
4

 

在配置文件中,Spring配置Bean实例通常会指定2个属性:

Id:指定该Bean的唯一标识,程序通过ID属性值来访问该BEAN实例。

Class:指定该BEAN的实现类,此处不可再用接口(接口是不能实例化的),必须使用实现类,Spring容器会使用XML解析器读取该属性值,并利用反射来创建该实现类的实例。

构造注入:IOC容器使用构造器来注入被依赖的实例。这种方式在构造实例时,已经为其完成了依赖关系的初始化。

3 spring容器:  

  Bean工厂(BeanFactory)、应用上下文(ApplicationContext)。

   
Bean工厂和应用上下文的区别。
   应用上下文是Bean工厂的子接口,功能更为强大,扩展了企业级服务:电子邮件服务,JNDI服务。
   Bean工厂是延迟加载,应用上下文是立即加载。
   spring容器中取出的实体对象默认是单例模式。 

应用上下文的实现类作用。

ClassPathXmlApplicationContext  从src目录下查询。
FileSystemXmlApplicationContext 从工程下查询
XmlWebApplicationContext  从web项目的webroot下查询

4、bean装配的方式,value和ref的含义。

 value是直接赋值,ref引用已经注册的bean。

 bean默认是单例模式。利用scope="prototype"提供多实例。
 bean的装配支持List、Set、Map、Properties 数组。

 

转载于:https://www.cnblogs.com/hellokitty1/p/5068500.html

你可能感兴趣的文章
每天学习2小时的故事
查看>>
asa-url-filter
查看>>
iOS入门培训还要钱?看博客,看视频都拿下
查看>>
mysql:error: 'Access denied for user 'root'@'localhost' (using password: YES)
查看>>
rsync 不能复制数据
查看>>
Workspace in use or cannot be created, choose a different one.
查看>>
linux下mongodb的安装
查看>>
分页查询
查看>>
安卓网络编程
查看>>
我的个人博客地址
查看>>
java 的HashMap和HashTable的区别?
查看>>
php页面防止重复提交
查看>>
Perl DBI模块的例子
查看>>
python中str和repr区别
查看>>
升级win10后无法使用桥接网络解决方法
查看>>
如何进行跨网段的远程唤醒
查看>>
数据挖掘-同比与环比
查看>>
nginx+php详解
查看>>
怎样取php一个字符串中的某个字符
查看>>
我的友情链接
查看>>