| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> spring5框架中的IOC容器 -> 正文阅读 |
|
[Java知识库]spring5框架中的IOC容器 |
目录 ? 使用idea学习,首先要先导入jar包: 一、什么是IOC?1.控制反转,把对象创建和对象之间的调用的操作交给了Spring管理 2.使用IOC可以降低耦合度 二、IOC底层原理:1.xml解析 2.工厂模式 3.反射机制 三、IOC容器Spring提供了IOC容器的两种实现方法 1.BeanFactory:IOC容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用 * 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象 2.ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人 员进行使用 * 加载配置文件时候就会把在配置文件对象进行创建 四、IOC操作Bean管理:Bean管理分为两部分:(1)Spring创建对象 (2)Spring注入属性 Bean管理的操作有两种方式:(1)基于xml配置文件的实现方式 (2)基于注解的实现方式(这个比较方便,用的也多) xml方式:? ? ? ? 创建对象的配置操作:? ? ? ? ? ? ? ? ①在Spring配置文件中,使用bean标签,标签里面添加响应的属性,实现对象的创建? ? ?
????????????????②bean标签中的常用属性: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? id属性:唯一标识(这里就是实例化以后的对象名) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? class属性:类路径(这里就是要实例化的类的路径) ? ? ? ? ? 属性注入的配置操作:? ? ? ? ? ? ? ? 方法一:DI:依赖注入,其实是调用了类中的set()。 ? ? ? ? ? ? ? ? 在bean标签的中间使用property标签来配置:(可以配置多个)
? ? ? ? ? ? ? ? 方法二:使用有参数的构造器进行注入 ??????????????????在bean标签的中间使用constructoy-arg标签来配置:(可以配置多个)???
? ? ? ? ? 1、?如果是一个类中调用了另一个类,此时属性的注入是一个类的对象:那就需要这样:(外部bean)
? ? ? ? 也可以这样(内部bean)
?2、注入数组类型的属性:注入List类型的属性:注入Map类型的属性:注入Set类型的属性(相似)
3、此时如果有相同的集合需要注入,那xml文件将会很长 所以:在Spring配置文件中引入名称空间util:
再使用这个util标签完成list集合的注入: ?
4、Spring有两种类型bean,一种是普通bean,另一种是工厂bean(FactoryBean) ? ? ? ? ①普通 bean:在配置文件中定义 bean 类型就是返回类型 ? ? ? ? ②工厂 bean:在配置文件定义 bean 类型可以和返回类型不一样 ????????????????第一步 创建类,让这个类作为工厂 bean,实现接口 FactoryBean ????????????????第二步 实现接口里面的方法,在实现的方法中定义返回的 bean 类型 ????????????????????????
配置
?此时,getBean()返回值就是工厂bean中泛型的类型
5、在 Spring 里面,默认情况下,bean 是单实例对象 6、如何设置单实例还是多实例 ①在 spring 配置文件 bean 标签里面有属性(scope)用于设置单实例还是多实例 ②scope 属性值 第一个值 默认值,singleton,表示是单实例对象 第二个值 prototype,表示是多实例对象
③singleton 和 prototype 区别 第一 singleton 单实例,prototype 多实例 第二 设置 scope 值是 singleton 时候,加载 spring 配置文件时候就会创建单实例对象 设置 scope 值是 prototype 时候,不是在加载 spring 配置文件时候创建 对象,在调用 getBean 方法时候创建多实例对象 7、xml自动装配:根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入 ①根据属性名称自动注入
②根据属性类型自动注入
注解方式:1、Spring 针对 Bean 管理中创建对象提供注解(1)@Component (2)@Service (3)@Controller (4)@Repository? 上面四个注解功能是一样的,都可以用来创建 bean 实例 2、实现对象创造第一步:引入依赖 ?第二步:开启组件扫描
第三步 创建类,在类上面添加创建对象注解 ????????在注解里面 value 属性值可以省略不写, //默认值是类名称,首字母小写 3、开启组件扫描配置的细节①use-default-filters="false" 表示现在不使用默认 filter,需要自己配置 filter context:include-filter ,设置扫描哪些内容
②下面配置扫描包所有内容 context:exclude-filter: 设置哪些内容不进行扫描
4、实现属性注入@Value? 注入普通类型属性
@Autowired (属于javax包下)根据属性类型进行自动装配
@Qualifier (属于javax包下)根据名称进行自动装配,需要和@Autowired一起使用
@Resource(不是内部注解)既可以根据类型进行自动装配,也可以根据名称进行自动装配
bean生命周期:(1)通过构造器创建 bean 实例(无参数构造) (2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法) (3)把 bean 实例传递 bean 后置处理器的方法 postProcessBeforeInitialization (4)调用 bean 的初始化的方法(需要进行配置初始化的方法) (5)把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization (6)bean 可以使用了(对象获取到了) (7)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:11:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |