• Spring之控制反转(IoC)


    一、介绍

    Spring框架是一个非常流行的Java开发框架,它的核心是控制反转(IoC)和面向切面编程(AOP)。其中,IoC是最重要的一个概念,它可以让开发者更加灵活地组织和解耦代码。

    在Spring框架中,IoC是通过容器来实现的。容器负责创建和初始化对象,以及将依赖关系注入到对象中。这样,开发者就不需要手动创建和初始化对象,也不需要关心依赖关系的配置。

    二、实例

    下面是一个简单的Spring IoC配置文件示例:

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans
    4. http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="userService" class="com.example.UserService">
    6. <property name="userDao" ref="userDao"/>
    7. bean>
    8. <bean id="userDao" class="com.example.UserDao">
    9. <property name="dataSource" ref="dataSource"/>
    10. bean>
    11. <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    12. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    13. <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    14. <property name="username" value="root"/>
    15. <property name="password" value="password"/>
    16. bean>
    17. beans>

    在上面的配置文件中,我们定义了三个bean,分别是userServiceuserDaodataSource。其中,userService依赖于userDaouserDao依赖于dataSource。通过使用ref属性,我们将userDaodataSource分别引用到userServiceuserDao中。

    下面是一个简单的Spring IoC代码示例:

    1. public class UserService {
    2. private UserDao userDao;
    3. public void setUserDao(UserDao userDao) {
    4. this.userDao = userDao;
    5. }
    6. public void saveUser(User user) {
    7. userDao.save(user);
    8. }
    9. }

    在上面的代码中,我们定义了一个UserService类,它依赖于UserDao类。在构造函数中,我们不需要手动创建和初始化UserDao对象,因为Spring框架会自动将已经创建好的UserDao对象注入到UserService中。

    当Spring容器启动时,容器会自动创建和初始化所有的bean,并将它们按照依赖关系组合在一起。这样,开发者就不需要手动创建和初始化对象,也不需要关心依赖关系的配置。

    总之,Spring框架的IoC可以让开发者更加灵活地组织和解耦代码,从而提高代码的可维护性和可重用性。

  • 相关阅读:
    Vue中的懒加载是什么,如何实现懒加载?
    阿里巴巴中国站上传图片到1688 API 返回值说明
    基于Java搬家预约系统设计实现(源码+lw+部署文档+讲解等)
    Jmeter实现接口文件上传、阅览和下载
    Java构建Web项目
    从一次性销售到持续收益:低代码服务商的转型之路
    STM32F4XX - 系统定时器(SysTick)设置
    vue项目中使用svg
    C语言基础语法复习08-位域bit-fields
    Android中如何知道我使用的是 AndroidX 库还是 Support Library
  • 原文地址:https://blog.csdn.net/weixin_52721608/article/details/132678040