IOC容器-Bean管理XML方式(1-8)
IOC操作Bean管理
什么是Bean管理
0.Bean管理指的是两个操作
1.Spring创建对象
2.Spring注入属性
Bean管理操作两种方式
1.基于xml配置文件方式实现
2.基于注解方式实现
IOC操作Benan管理(基于xml方式)
1.基于xml方式创建对象
在spring配置文件中使用bean标签,标签里面添加对应的属性,就可以实现对象创建
在bean标签有很多属性,介绍常用的属性
id属性:唯一
class属性:类全路径(包类路径)
创建对象的时候,默认也是执行无参数构造方法(无构造方法会报错)
2.基于xml方式注入属性
DI:依赖注入,就是注入属性
第一种注入方式:使用 set方法进行注入
1.创建类,定义属性和对应的set方法
2.在spring配置文件配置对象创建,配置属性注入
测试方法:
第二种注入方式:有参数构造方法注入
1.创建类,定义属性,创建属性对应的有参构造方法
2.在spring配置文件中配置
测试:
测试
3.p名称空间注入
1.使用p名称空间注入,可以简化基于xml配置方式
1.添加p名称空间在配置文件中
2.进行属性注入,在bean标签里面进行操作
<!-- 简化属性注入写法 --> <bean id="book" class="com.atguigu.Book" p:bname="泽泽泽" p:bauthor="是傻波一"/>
IOC操作Bean管理(xml注入其他类型属性)
1.字面量(固定值)
1.null值
<!-- null值 --> <property name="bauthor"> <null/> </property>
2.属性值包含特殊符号
<!-- 属性值包含特殊符号 1把<>进行转义 &tl; > 2把带特殊符号内容写到CDATA --> <property name="bauthor"> <value><![CDATA[<<南京>>]]></value> </property>
2.注入属性-外部bean
1.创建两个类service类和dao类
2.在service调用dao里面的方法
public class UserService { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void add(){ System.out.println("service add....."); userDao.update(); } }
3.在spring配置文件中进行配置
<!-- service和dao对象创建--> <bean id="userService" class="com.atguigu.service.UserService"> <!-- 注入userdao对象 name属性值:类里面属性名称 ref属性:创建userDao对象bean标签id值 --> <property name="userDao" ref="userDao"/> </bean> <bean id="userDao" class="com.atguigu.dao.UserDaoImpl"/>
创建员工类 部门类实现内部bean以及级联赋值
3.注入属性-内部bean 和 级联赋值
<!-- 内部bean --> <bean id="emp" class="com.atguigu.spring5.Emp"> <property name="ename" value="lucy"/> <property name="gender" value="女"/> <property name="dept"> <bean id="dept" class="com.atguigu.spring5.Dept"> <property name="dname" value="安保部"/> </bean> </property> </bean>
4.注入属性-级联赋值
第一种写法:
<!-- 内部bean --> <bean id="emp" class="com.atguigu.spring5.Emp"> <!-- 设置两个普通属性--> <property name="ename" value="lucy"/> <property name="gender" value="女"/> <!-- 级联赋值 --> <property name="dept" ref="dept"></property> </bean> <bean id="dept" class="com.atguigu.spring5.Dept"> <property name="dname" value="财务部"></property> </bean>
第二种写法:
<!-- 内部bean --> <bean id="emp" class="com.atguigu.spring5.Emp"> <!-- 设置两个普通属性--> <property name="ename" value="lucy"/> <property name="gender" value="女"/> <!-- 级联赋值 第一种写法--> <property name="dept" ref="dept"></property> <!-- 第二种写法 --> <property name="dept.dname" value="技术部"></property> </bean> <bean id="dept" class="com.atguigu.spring5.Dept"> <!-- <property name="dname" value="财务部"></property>--> </bean>
IOC操作Bean管理(xml注入集合属性)
1.注入数组类型属性
2.注入List集合类型属性
3.注入Map集合属性
创建类 定义数组 list set map 类型属性,生成对应的set方法
在spring配置文件进行配置
<!-- 集合类型属性注入 --> <bean id="stu" class="com.atguigu.spring5.collectiontype.Stu"> <!-- 数组类型属性注入 --> <property name="courses"> <array> <value>语文</value> <value>数据库</value> <value>数学</value> <value>奥文</value> <value>科学</value> </array> </property> <!-- list类型属性注入 --> <property name="list"> <list> <value>小泽泽</value> <value>泽泽</value> <value>明哲</value> </list> </property> <!-- map类型属性注入 --> <property name="maps"> <map> <entry key="JAVA" value="java"></entry> <entry key="PHP" value="php"></entry> </map> </property> <!-- set类型属性注入 --> <property name="sets"> <set> <value>MySql</value> <value>Redis</value> </set> </property> </bean>
4.在集合里面设置对象类型值
<!-- 注入list集合,值是对象 --> <property name="courseList"> <list> <ref bean="course1"></ref> <ref bean="course2"></ref> </list> </property> </bean> <!-- 创建多个course对象 --> <bean id="course1" class="com.atguigu.spring5.collectiontype.Course"> <property name="cname" value="Spring5框架"/> </bean> <bean id="course2" class="com.atguigu.spring5.collectiontype.Course"> <property name="cname" value="MyBatis5框架"/> </bean>
5.把集合注入部分提取出来
1.在spring配置文件引入名称空间 util
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 集合类型属性注入 --> </beans>
2.使用util标签完成list集合注入提取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现