分层解耦(二)

一 .分层解耦( IOC & DI)入门

分层解耦实现思路(借助 IOC & DI )
  • 控制反转(IOC,Inversion Of Control):原本对象创建控制权在程序自身(如 Controllernew ServiceServicenew Dao ),现在转交给外部容器管理。容器负责创建对象(如 UserServiceImplUserDaoImpl 等的实例 ),实现了对象创建的 “反转”,降低程序内部创建对象的依赖。
  • 依赖注入(DI,Dependency Injection):容器在程序运行时,将对象依赖的资源(比如 UserController 依赖的 UserService 实例 )注入到需要的地方。像 UserController 里声明 private UserService userService ,无需自己 new ,由容器把对应的 UserService 实现类实例注入进来,让层与层之间依赖关系更灵活、易管理。
  • **Bean对象:**IOC容器中创建、管理的对象,称之为Bean。
关键流程
  1. 容器管理对象:提前配置好哪些类由容器创建(如 UserService 相关实现类、UserDao 相关实现类 ),容器会创建这些类的实例(即 Bean 对象 )并进行管理。
  2. 依赖注入使用:在需要依赖的地方(如 UserController 需要 UserService ),通过注解等方式(不同框架有不同实现,如 Spring 中 @Autowired 等 ),让容器把对应的 Bean 注入进来,供程序使用。这样修改实现类时,只需在容器配置或注解指定新实现,不用改动调用类代码,实现低耦合。

通过 IOC 实现对象创建控制反转,结合 DI 完成依赖资源注入,能有效对软件分层进行解耦,让各层、模块职责更清晰,符合高内聚低耦合设计原则,提升代码可维护性与扩展性 。

二. 控制反转(IOC)详解

注解 说明 位置
@Component 声明bean的基础注解 不属于以下三类时,用此注解
@Controller @Component的衍生注解 标注在控制层类上
@Service @Component的衍生注解 标注在业务层类上
@Repository @Component的衍生注解 标注在数据访问层类上(由于与mybatis整合,用的少)

[!CAUTION]

前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。

该注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解 @SpringBootApplication 中(封装了@ComponentScan),默认扫描的范围是启动类所在包及其子包,但是超出这个范围就不会生效

三. 依赖注入(DI)详解

1.依赖注入的三种方式
//方式一属性注入
@Autowired
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值