【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中配置资源


相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...