一、Spring的控制反转(IOC)学习
2021-02-09 00:16
标签:dep 如何 解决 查看 sqli 常见 方案 pen 耦合 控制反转(Inversion of Control,缩写为IoC),是面向对象中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 也就是说:控制反转就是存在一个系统管理者(一般设计为一个类),这个管理者管理类与类之间的依赖关系,以达到解耦的目的,使类与类之间的依赖降低。具体形象表述如下图: 我们设计如下三个类。 其中执行的逻辑为: UserDaoOracleImpl.java UserServiceImpl.java 上述代码存在的问题: 解决方案如下 ? 经过set方式对userDao对象通过set方法设置值,降低了代码之间的耦合度,提高了复用性。但仍存在不足,对象与对象之间的依赖仍然存在于代码中。作为Spring的两大核心之一的IOC,Spring如何解决这个问题? ? spring中实现控制反转的方式为依赖注入(DI),也就是将对象之间的 依赖统一注入到IOC容器中,由Spring的IOC容器统一托管,当需要使用对象时,只需要向IOC容器申请即可。 ? 首先需要创建applicationContext.xml文件,将涉及到的对象注入到配置文件中 修改配置文件中的ref为mysql时、运行结果为: ? Spring实现IOC的原理为反射机制,属性注入的实质为Set注入,即通过Set方法对对象进行赋值。 一、Spring的控制反转(IOC)学习 标签:dep 如何 解决 查看 sqli 常见 方案 pen 耦合 原文地址:https://www.cnblogs.com/polary/p/12769292.html一、控制反转
1、什么是控制反转?
2、java中的例子
UserServiceImpl通过调用userDao对象,来执行具体userDao对象中的方法。 public class UserDaoMysqlImpl implements UserDao{
@Override
public void getUser() {
System.out.println("mysql获取用户数据");
}
}
public class UserDaoOracleImpl implements UserDao{
@Override
public void getUser() {
System.out.println("oracle获取用户数据");
}
}
public class UserServiceImpl implements UserService{
private UserDao userDao =new UserDaoOracleImpl();//如果想获取Mysql,需要更改代码
@Override
public void getUser() {
userDao.getUser();
}
}
public class UserServiceImpl implements UserService{
private UserDao userDao ;
public void setUserDao(UserDao ud){
this.userDao=ud;
}
@Override
public void getUser() {
userDao.getUser();
}
}
二、Spring中如何实现控制反转IOC
1、实现思想
2、具体实现
(1)、applicationContext.xml
(2)、执行测试类
public class DemoTest {
public static void main(String[] args) {
ApplicationContext ac =new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us=(UserService) ac.getBean("userService");
us.getUser();
}
}
(3)、查看运行结果
3、IOC实现原理
文章标题:一、Spring的控制反转(IOC)学习
文章链接:http://soscw.com/index.php/essay/52866.html