【Java闭关修炼】Spring-IOC介绍
创始人
2025-06-01 07:16:22
0

【Java闭关修炼】Spring-IOC介绍

    • 概念
    • 体系结构
    • loc介绍
    • loc简单案例
      • 导入spring坐标
      • 添加实现类
      • 创建SpringContext.xml
      • 创建spring控制的资源
      • 编写主方法
    • bean的配置
    • bean属性-scope
    • bean的声明周期
    • bean-静态工厂与实例工厂创建
      • 创建静态工厂
      • 创建实例 工厂
    • DI-依赖注入
      • set注入
        • 注入引用类型资源
        • 非引用类型资源的注入
      • 构造方法注入资源
    • 读取properties文件信息
      • 原始的set注入方法
      • 读取配置文件进行注入资源
    • import导入配置文件
      • applicationContext.xml
      • ### applicationContext-user.xml
      • ### applicationContext-book.xml
    • 第三方bean配置
      • 首先在pom.xml 导入依赖
      • applicationContext.xml中配置资源

概念

在这里插入图片描述

体系结构

在这里插入图片描述

loc介绍

在这里插入图片描述

loc简单案例

在这里插入图片描述

导入spring坐标

将下面的依赖添加到pom.xml中,spring版本

        org.springframeworkspring-context5.1.9.RELEASE

添加实现类

  • 创建接口
package com.itheima.service;public interface UserService {public void save();
}
  • 创建实现类
package com.itheima.service.impl;import com.itheima.service.UserService;public class UserServiceImpl implements UserService {@Overridepublic void save() {System.out.println("测试spring框架");}
}

创建SpringContext.xml

https://docs.spring.io/spring-framework/docs/5.1.9.RELEASE/spring-framework-reference/core.html#spring-core


创建spring控制的资源

id是接口名称,class是实现类路径



编写主方法

import com.itheima.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserApp {public static void main(String[] args) {// 加载配置文件ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取资源UserService userService = (UserService) ctx.getBean("userService");// 强制转换接口userService.save();//}
}

bean的配置

在这里插入图片描述



bean属性-scope

在这里插入图片描述

主要用来控制创建的对象是不是单例的

比如singleton创建的对象就是单例的



import com.itheima.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserApp {public static void main(String[] args) {// 加载配置文件ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取资源UserService userService3 = (UserService) ctx.getBean("userService");// 强制转换接口UserService userService1 = (UserService) ctx.getBean("userService");// 强制转换接口UserService userService2 = (UserService) ctx.getBean("userService");// 强制转换接口System.out.println(userService2 == userService1);// 创建的是单例对象//        userService.save();//}
}

bean的声明周期

在这里插入图片描述



import com.itheima.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class UserApp {public static void main(String[] args) {// 加载配置文件ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取资源UserService userService3 = (UserService) ctx.getBean("userService");// 强制转换接口UserService userService1 = (UserService) ctx.getBean("userService");// 强制转换接口UserService userService2 = (UserService) ctx.getBean("userService");// 强制转换接口//        System.out.println(userService2 == userService1);// 创建的是单例对象ctx.close();//        userService.save();//}
}

bean-静态工厂与实例工厂创建

在这里插入图片描述

创建静态工厂

package com.itheima.service;
import com.itheima.service.impl.UserServiceImpl;// 创建静态工厂类
public class UserServiceFactory {// 多态  父类指向子类对象public static UserService  getService(){return new UserServiceImpl();// 返回一个实现类 对象}
}

更改配置文件




现在这种资源的创建与调用 走的是工厂类的创建

创建实例 工厂

更改配置文件





package com.itheima.service;
import com.itheima.service.impl.UserServiceImpl;// 创建静态工厂类
public class UserServiceFactory {// 多态  父类指向子类对象// 实例工厂对象 去掉staticpublic UserService  getService(){System.out.println("实例工厂创建出来的对象");return new UserServiceImpl();// 返回一个实现类 对象}
}

DI-依赖注入

在这里插入图片描述

set注入

在这里插入图片描述

注入引用类型资源

  • UserDao接口
package com.itheima.dao;public interface UserDao {public void save();
}
  • UserDao接口实现类
package com.itheima.dao.impl;import com.itheima.dao.UserDao;public class UserDaoImpl implements UserDao {@Overridepublic void save() {System.out.println("set注入");}
}
  • UserServiceImpl
package com.itheima.service.impl;import com.itheima.dao.UserDao;
import com.itheima.service.UserService;public class UserServiceImpl implements UserService {private UserDao userDao;// 使用set注入public void setUserDao(UserDao userDao) {this.userDao = userDao;}// 初始化函数public void init(){System.out.println("init...");}public void destroy(){System.out.println("销毁bean...");}@Overridepublic void save() {System.out.println("使用userDao调用操作");userDao.save();// 使用set注入的资源}
}
  • applicationContext.xml








非引用类型资源的注入

  • 还是需要创建set方法获取 对象
package com.itheima.service.impl;import com.itheima.dao.UserDao;
import com.itheima.service.UserService;public class UserServiceImpl implements UserService {private UserDao userDao;private int num;public void setNum(int num) {this.num = num;}// 使用set注入public void setUserDao(UserDao userDao) {this.userDao = userDao;}// 初始化函数public void init(){System.out.println("init...");}public void destroy(){System.out.println("销毁bean...");}@Overridepublic void save() {System.out.println("使用userDao调用操作");userDao.save();// 使用set注入的资源}
}
  • applicationContext.xml
package com.itheima.service.impl;import com.itheima.dao.UserDao;
import com.itheima.service.UserService;public class UserServiceImpl implements UserService {private UserDao userDao;private int num;public void setNum(int num) {this.num = num;}// 使用set注入public void setUserDao(UserDao userDao) {this.userDao = userDao;}// 初始化函数public void init(){System.out.println("init...");}public void destroy(){System.out.println("销毁bean...");}@Overridepublic void save() {System.out.println("使用userDao调用操作" + num);userDao.save();// 使用set注入的资源}
}

构造方法注入资源

在这里插入图片描述



读取properties文件信息

使用读取到的数据给bean属性赋值在这里插入图片描述

原始的set注入方法

读取配置文件进行注入资源




import导入配置文件

当团队协作的时候,xml文件过多可以配置多个xml文件,最后进行导入

在这里插入图片描述

applicationContext.xml

该配置文件需要使用userDao和bookDao的资源



























### applicationContext-user.xml



### applicationContext-book.xml




第三方bean配置

阿里数据源druid

首先在pom.xml 导入依赖


4.0.0com.itheimaSpring_day01_04_实用开发相关配置1.0-SNAPSHOTorg.springframeworkspring-context5.1.9.RELEASEcom.alibabadruid1.1.16




applicationContext.xml中配置资源


相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...