Spring IoC[控制反转]
来源:互联网 发布:js点击按钮隐藏input 编辑:程序博客网 时间:2024/05/17 08:40
近段时间正在学习spring。对于spring IOC发表一下自己的见解
1 spring IoC
1.1 什么是IoC
控制反转(Inversion of Control,英文缩写为IoC)。主要是用来降低程序之间耦合度的一种方式。
1.2 IoC主要形式
◇依赖查找:容器提供回调接口和上下文条件给组件。组件就必须使用容器提供的API来查找资源和协作对象,容器将调用这些回调方法,从而让应用代码获得相关资源。
◇依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。
*通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection); *将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection)
1.3 IoC的优缺点
优点
把对象生成放在xml配置文件中,当我们需要修改某些对象时候,只需要在xml中进行操作,
降低了程序之间的耦合度。缺点
在程序编写时候可能增加步骤。
通过反射机制影响效率。
修改类文件后操作比较繁琐。
2 具体小案例
2.1 编写Dao类
public interface UserDao { public void getUser();}
2.2 编写impl类
public class UserImpl implements UserDao { private String name; private String password; public UserImpl(String name) { super(); this.name = name; } public UserImpl(String name, String password) { super(); this.name = name; this.password = password; } @Override public String toString() { return "username="+name+" password="+password; } @Override public void getUser() { System.out.println(toString()); }}
2.3 编写service接口
public interface UserService { public void showservice();}
2.4 service实现类
public class UserServiceImpl implements UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void showService() { userDao.getUser(); }}
2.5 xml配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--采用有两个参数的构造方法--> <bean id="user" class="com.jsu.dao.Impl.UserImpl"> <constructor-arg index="0" value="zhangsan"/> <constructor-arg index="1" value="123"/> </bean> <!--只有一个参数的构造方法--> <bean id="user1" class="com.jsu.dao.Impl.UserImpl"> <constructor-arg value="张三"/> </bean> <bean id="service" class="com.jsu.service.serviceImpl.UserServiceImpl"> <property name="userDao" ref="user1"/> </bean> <!--配置别名--> <alias name="service" alias="sc"/> <!--id是唯一的 此时name 相当于别名 name 可用空格 逗号 分号 分割 假如没配置id 则获取直接获取name constructor-arg 当只有一个时候 直接输入value 当有多个时候需要用下标指定 --> <bean id="users" name="user3" class="com.jsu.dao.Impl.UserImpl"> <constructor-arg value="lisi"/> </bean></beans>
2.6 测试类
public class SpirngTest { public static void main(String[] args) { //解析xml文件 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //获取对象 UserService service = (UserService) context.getBean("service"); service.showService(); }}
2.7 结果
控制台输出:
username=zhangsan password=123
通过上述案例
我们可以发现本来要在service中创建对象的任务
转交给了xml配置文件
这样降低了程序之间的耦合度
0 0
- Spring IOC 反转控制
- Spring-----> IOC(控制反转)
- Spring - 控制反转IOC
- Spring IoC[控制反转]
- Spring控制反转IOC
- Spring IOC控制反转
- Spring IOC 控制反转
- spring ioc 控制反转
- Spring 控制反转(IoC)容器
- spring IOC(控制反转)浅析
- Spring IoC(控制反转)
- Spring Core---------IoC控制反转
- Spring Core---------IoC控制反转
- Spring IOC(控制反转)容器
- Spring IoC(控制反转)
- spring IOC容器:控制反转
- Spring---IOC 控制反转--1
- spring IOC 控制反转详解
- linux camera ---1
- c# c++ 自动接口工具
- 第十一周阅读程序(5.1)
- 我的世界:8分钟教会你开服联机
- 自定义页面加载LoadingLayout
- Spring IoC[控制反转]
- Spring 4.x Reference翻译(一)IOC容器
- 高斯混合模型用到的几个公式
- org.json.simple JSONArray JSONObject
- CodeForces - 670D1 Magic Powder - 1 (模拟)
- 每秒处理10万订单乐视集团支付架构
- PHP中使用CURL报错解决方案
- 数据库中的并发操作带来的一系列问题及解决方法
- 为韩春雨老师和他的 NgAgo-gDNA 点赞