Spring-IOC容器-Bean管理-基于XML方式超详解!

Bean管理指的是两个操作:

  1. Spring创建对象

  2. Spring注入属性

  3. Bean管理操作的两种方式

  4. 基于xml配置文件方式实现

  5. 基于注解方式实现

接下来的部分详细讲解IOC操作Bean管理基于XML方式的详解

IOC 操作 Bean 管理(set方式注入&&使用有参构造进行注入)


  1. set方式注入

①创建类,定义属性和对应的 set 方法

public class Book {

private String bName;

private String bAuthor;

//创建属性

public void setbName(String bName) {

this.bName = bName;

}

//创建属性对应的 set 方法

public void setbAuthor(String bAuthor) {

this.bAuthor = bAuthor;

}

}

②在 spring 配置文件配置对象创建,配置属性注入

  1. 使用有参数构造进行注入

①创建类,定义属性,创建属性对应有参数构造方法

public class Order {

private String oName;

private String address;

public Order(String oName, String address) {

this.oName = oName;

this.address = address;

}

}

②在 spring 配置文件中进行配置

IOC 操作 Bean 管理(xml注入其他类型属性)


  1. 注入空值和特殊符号

<![CDATA[<<南京>>]]>

  1. 注入属性-外部bean

①创建两个类service和dao类

public class UserService {//service类

//创建UserDao类型属性,生成set方法

private UserDao userDao;

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

public void add() {

System.out.println(“service add…”);

userDao.update();//调用dao方法

}

}

public class UserDaoImpl implements UserDao {//dao类

@Override

public void update() {

System.out.println(“dao update…”);

}

}

②在spring配置文件中进行配置

  1. 注入属性-内部 bean

①在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

//部门类

public class Dept {

private String dname;

public void setDname(String dname) {

this.dname = dname;

}

}

//员工类

public class Emp {

private String ename;

private String gender;

//员工属于某一个部门,使用对象形式表示

private Dept dept;

public void setDept(Dept dept) {

this.dept = dept;

}

public void setEname(String ename) {

this.ename = ename;

}

public void setGender(String gender) {

this.gender = gender;

}

}

②在spring配置文件中配置

  1. 注入属性-级联赋值

//方式二:生成dept的get方法(get方法必须有!!)

public Dept getDept() {

return dept;

}

IOC 操作 Bean 管理(xml注入集合属性)


  1. xml注入数组类型属性

  2. xml注入List集合类型属性

  3. xml注入Map集合类型属性

//(1)创建类,定义数组、list、map、set 类型属性,生成对应 set 方法

public class Stu {

//1 数组类型属性

private String[] courses;

//2 list集合类型属性

private List list;

//3 map集合类型属性

private Map<String,String> maps;

//4 set集合类型属性

private Set sets;

public void setSets(Set sets) {

this.sets = sets;

}

public void setCourses(String[] courses) {

this.courses = courses;

}

public void setList(List list) {

this.list = list;

}

public void setMaps(Map<String, String> maps) {

this.maps = maps;

}

java课程

数据库课程

张三

小三

MySQL

Redis

在集合里面设置对象类型值

//学生所学多门课程

private List courseList;//创建集合

public void setCourseList(List courseList) {

this.courseList = courseList;

}

<?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: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">

<util:list id=“bookList”>

易筋经

九阴真经

九阳神功

</util:list>

IOC 操作 Bean 管理(FactoryBean)


  1. Spring 有两种类型 bean,一种普通 bean,另外一种工厂 bean(FactoryBean)

  2. 普通 bean:在配置文件中定义 bean 类型就是返回类型

  3. 工厂 bean:在配置文件定义 bean 类型可以和返回类型不一样

(1)创建类,让这个类作为工厂 bean,实现接口 FactoryBean。

(2)第二步 实现接口里面的方法,在实现的方法中定义返回的 bean 类型。

public class MyBean implements FactoryBean {

//定义返回bean

@Override

public Course getObject() throws Exception {

Course course = new Course();

course.setCname(“abc”);

return course;

}

}

@Test

public void test3() {

ApplicationContext context =

new ClassPathXmlApplicationContext(“bean3.xml”);

Course course = context.getBean(“myBean”, Course.class);//返回值类型可以不是定义的bean类型!

System.out.println(course);

}

IOC 操作 Bean 管理(bean 作用域)


在 Spring 里面,默认情况下,bean 是单实例对象,下面进行作用域设置:

  1. 在 spring 配置文件 bean 标签里面有属性(scope)用于设置单实例还是多实例。

  2. scope 属性值

  • 第一个值:默认值,singleton,表示是单实例对象 。

  • 第二个值:prototype,表示是多实例对象。

  1. singleton 和 prototype 区别:
  • singleton 单实例,prototype 多实例。

  • 设置 scope 值是 singleton 时候,加载 spring 配置文件时候就会创建单实例对象。 设置 scope 值是 prototype 时候,不是在加载 spring 配置文件时候创建对象,在调用 getBean 方法时候创建多实例对象

IOC 操作 Bean 管理(bean 生命周期)


  1. 生命周期:从对象创建到对象销毁的过程。

  2. bean 生命周期

①通过构造器创建 bean 实例(无参数构造)

②为 bean 的属性设置值和对其他 bean 引用(调用 set 方法)

③调用 bean 的初始化的方法(需要进行配置初始化的方法)

④bean 可以使用了(对象获取到了)

⑤当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法)

  1. 演示bean生命周期

public class Orders {

//无参数构造

public Orders() {

System.out.println(“第一步—执行无参数构造创建bean实例”);

}

private String oname;

public void setOname(String oname) {

this.oname = oname;

System.out.println(“第二步—调用set方法设置属性值”);

}

//创建执行的初始化的方法

public void initMethod() {

System.out.println(“第三步—执行初始化的方法”);

}

//创建执行的销毁的方法

public void destroyMethod() {

System.out.println(“第五步—执行销毁的方法”);

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-uW7o3eP4-1713305424863)]

[外链图片转存中…(img-hhTNBPyn-1713305424864)]

[外链图片转存中…(img-QlRJWkjz-1713305424864)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

[外链图片转存中…(img-UH3RNsIQ-1713305424864)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值