【Spring入门】IOC、DI

本文深入解析Spring框架,探讨其作为轻量级IOC容器的角色,如何简化Java企业级应用开发,增强代码的灵活性与可维护性。通过实例对比,展示IOC与DI的概念及应用,阐述依赖注入如何降低类间耦合。

Spring是什么?

1.Spring家族,包括Spring整个生态,Spring Framework、Spring MVC等;
2.特指Spring Framework;

Spring(Spring Framework)是什么?
Spring是一个轻量级的IOC容器框架,简化Java企业级应用开发,使得开发者更聚焦于业务逻辑。同时Spring集成了许多优秀的第三方框架。

Spring提供的核心功能:

IOC(Inversion of Control,控制反转)容器;
AOP(Aspect-Oriented Programming,面向切面编程);

什么是IOC

IOC:Inversion of Control,即控制反转。
控制:主要指对“对象”的控制,包括对象创建、对象间的依赖关系、对象的生命周期等;
反转:将控制权从开发者转变为Spring,即开发者不需要管理对象的创建、依赖、生命周期等,而是有Spring帮我们创建和管理。

1.不使用IOC,程序中硬编码

public class UserServiceImpl implements UserService {
    private UserDao userDao=new UserDaoImpl();
    
    public void addUser(User user) {
        userDao.addUser(user);
    }
}

2.使用IOC

public class UserServiceImpl implements UserService {
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    public void addUser(User user) {
        userDao.addUser(user);
    }
}
<?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="userService" class="com.myspring.day1.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao" />
    </bean>
    

</beans>

使用IOC的好处

降低类与类之间的耦合度,提高应用程序的灵活性和可维护性。
理解:

从设计模式的角度看
上面示例中,UserServiceImpl只需要一个能够操作user数据库表,并包含addUser方法的类,而并不关注这个类具体是如何实现的。

从代码变更的角度看
如果UserDao的实现类变化了,或者需要使用其他的实现类,此时必须修改所有“new UserDaoImpl();”的代码:
例如:

 public class UserServiceImpl implements UserService {
     private UserDao userDao = new UserDaoAnotherImpl();

如果使用IOC,则代码不需要任何变化,只需要变更XML配置文件即可。

 <bean id="userDao" class="com.bailiban.day1.dao.impl.UserDaoAnotherImpl" />

从代码编写的角度看
使用Spring注解,可以极大的简化开发

 public class UserServiceImpl implements UserService {
     @Autowired
     private UserDao userDao;

DI

什么是DI?
DI: Dependency Injection, 依赖注入

DI和IOC的关系
IOC是一种设计思想,用于降低程序见的耦合度。DI是IOC的一种实现,IOC的另一常见的实现方式是DL(Dependency Lookup,依赖查找)。
Spring使用的是DI。

依赖
主要类之间的依赖, 例如下面代码,我们可以认为UserDao是UserServiceImpl的一个依赖:

public class UserServiceImpl implements UserService {
private UserDao userDao;
注入
不需要从容器获取,Spring已经帮我们处理好所有依赖对象了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值