Spring IOC容器-Bean管理——基于XML(续集)

1、IOC 操作 Bean 管理(FactoryBean)

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

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

​ 3)、工厂 bean:在配置文件定义 bean 类型可以和返回类型不一样 第一步 创建类,让这个类作为工厂 bean,实现接口 FactoryBean 第二步 实现接口里面的方法,在实现的方法中定义返回的 bean 类型

public class MyBean implements FactoryBean<Course> {//定义返回bean@Overridepublic Course getObject() throws Exception {Course course = new Course();course.setCname("abc");return course;}
}
<bean id="myBean" class="com.atguigu.spring5.factorybean.MyBean">
</bean>
@Test
public void test3() {ApplicationContext context =new ClassPathXmlApplicationContext("bean3.xml");Course course = context.getBean("myBean", Course.class);//返回值类型可以不是定义的bean类型!System.out.println(course);
}

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

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

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

(2)scope 属性值 第一个值 默认值,singleton,表示是单实例对象 第二个值 prototype,表示是多实例对象

<bean id="book" class="com.atguigu.spring5.collectiontype.Book" scope="prototype"><!--设置为多实例--><property name="list" ref="bookList"></property>
</bean>

(3)singleton 和 prototype 区别

​ a)singleton 单实例,prototype 多实例

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

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

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

2、bean 生命周期

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

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

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

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

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

3、演示 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("第五步 执行销毁的方法");}}
public class MyBeanPost implements BeanPostProcessor {//创建后置处理器实现类@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("在初始化之前执行的方法");return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("在初始化之后执行的方法");return bean;}
}
<!--配置文件的bean参数配置-->
<bean id="orders" class="com.atguigu.spring5.bean.Orders" init-method="initMethod" destroy-method="destroyMethod">    <!--配置初始化方法和销毁方法--><property name="oname" value="手机"></property><!--这里就是通过set方式(注入属性)赋值-->
</bean><!--配置后置处理器-->
<bean id="myBeanPost" class="com.atguigu.spring5.bean.MyBeanPost"></bean>
 @Testpublic void testBean3() {// ApplicationContext context =
// new ClassPathXmlApplicationContext("bean4.xml");ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("bean4.xml");Orders orders = context.getBean("orders", Orders.class);System.out.println("第四步 获取创建 bean 实例对象");System.out.println(orders);//手动让 bean 实例销毁context.close();}

4、bean 的后置处理器,bean 生命周期有七步 (正常生命周期为五步,而配置后置处理器后为七步)

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

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

​ (3)把 bean 实例传递 bean 后置处理器的方法 postProcessBeforeInitialization

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

​ (5)把 bean 实例传递 bean 后置处理器的方法 postProcessAfterInitialization

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

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

5、IOC 操作 Bean 管理(外部属性文件)

方式一:直接配置数据库信息 :(1)配置Druid(德鲁伊)连接池 (2)引入Druid(德鲁伊)连接池依赖 jar 包

<!--直接配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/userDb"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean>

方式二:引入外部属性文件配置数据库连接池

(1)创建外部属性文件,properties 格式文件,写数据库信息(jdbc.properties)

prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/userDb
prop.userName=root
prop.password=root

(2)把外部 properties 属性文件引入到 spring 配置文件中 —— 引入 context 名称空间

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--引入context名称空间--><!--引入外部属性文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${prop.driverClass}"></property><property name="url" value="${prop.url}"></property><property name="username" value="${prop.userName}"></property><property name="password" value="${prop.password}"></property></bean></beans>

Spring IOC容器-Bean管理——基于XML方式相关推荐

  1. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

  2. spring基础Bean管理基于xml注入

    1.基于xml注入属性 1.什么是Bean管理 Bean管理指的是两个操作 (1) Spring创建对象 (2) Spirng注入属性 2.Bean管理操作有两种方式 (1)基于xml配置文件方式实现 ...

  3. spring的IOC容器Bean管理(基于xml方式)

    ==目的:==降低耦合度 ==技术:==xml解析.工厂模式.反射 ioc容器的实现 spring框架提供了两种实现方式(两个接口) BeanFactory接口 ioc容器的基本实现,是spring框 ...

  4. [Spring5]IOC容器_Bean管理XML方式_自动装配

    IOC操作Bean管理(xml自动装配) package com.atguigu.spring.autowire;public class Dept {@Overridepublic String t ...

  5. Spring IOC容器和Bean的配置

    Spring IOC容器 和Bean的配置 : IOC和DI IOC(Inversion of Control):反转控制 在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的 ...

  6. Spring IoC容器与Bean管理

    Spring IoC容器与Bean管理 一.Spring IoC容器与Bean管理 1.Spring快速入门 IoC控制反转 DI依赖注入 Spring概述 Spring IoC初体验 使用XML方式 ...

  7. [Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性

    IOC操作 Bean管理 什么是Bean管理 1.Bean管理指的是两个操作: a.Spring创建对象 b.Spring注入属性 2.Bean管理操作有两种方式 a.基于xml配置文件方式实现 b. ...

  8. IOC操作Bean管理XML方式(bean 的生命周期)

    目录 IOC操作Bean管理XML方式(bean 的生命周期) 1.bean 的生命周期(在单例模式下的生命周期) (1)通过构造器创建 bean 的实例(执行类中无参构造方法去创建对象) (2)为 ...

  9. IOC操作Bean管理XML方式(创建对象和set注入属性)

    目录 1.什么是 Bean 管理: (1)通过 Spring 创建对象 (2)通过 Spring 注入属性 2.IOC 操作 Bean 管理有两种方式: (1)基于 xml 配置文件方式实现 (1.1 ...

最新文章

  1. 偏见与人类大脑结构有关
  2. Bytom BIP-32协议和BIP-44协议解读
  3. 计算机技能训练B会学什么,计算机入门及操作技能训练模拟试题.pdf
  4. Java Thread源码分析
  5. C/C++实现图的广度和深度遍历
  6. VirtualBox使用技巧
  7. OGRE 入门 二、Basic Tutorial 1 : An introduction to the most basic Ogre constructs
  8. CVPR2019 Oral!伯克利、麻省理工GAN图像合成最新成果(附开源代码)!
  9. java 6和_java都到6了 有什么不同 哦????
  10. Resource Hacker
  11. .NET 排序 Array.Sort<T> 实现分析
  12. Apache 别名与重定向
  13. java原始套接字打开_原始套接字-IP头包含选项
  14. centos7开启网卡命令_centos7如何启动网卡
  15. 这些信用卡取现可以免除手续费!
  16. PHP——AES加解密 +SIGN校验唯一性安全性(Api)
  17. MultipartFile transferTo() FileNotFound 拒绝访问
  18. 智能指针之atuo_ptr源码剖析
  19. 用Keil工具搭建S3C2440编译环境
  20. R语言学习| 马氏距离mahanobis函数

热门文章

  1. thymeleaf if判断_Thymeleaf入门——入门与基本概述
  2. Android ble连接过程,Android开发之ble蓝牙
  3. CPU 和 GPU频率设置
  4. python比特币挖矿_比特币如何挖矿(挖矿原理)-工作量证明
  5. vant表单组件+iconfont组合使用 - 代码篇
  6. font-familly:' 阿里巴巴-普惠体 '【永久免费 】 - 下载与使用
  7. vue页面渲染(请求返回的后端)data,文本换行与显示bug 的分析与解决提示
  8. clistctrl获取选中行数据_大神,Excel数据怎么对比?
  9. PHP二维码在线制作生成系统源码 无需数据库 带logo图标
  10. 海洋CMS仿爱美剧网站模板源码