IoC、Bean的作用域、生命周期

本文详细解释了IoC(控制反转)和DI(依赖注入)的概念,以及Spring框架中的Bean作用域(单例或多实例)和Bean对象从创建到销毁的生命周期过程。通过例子展示了如何配置和使用这些概念。
摘要由CSDN通过智能技术生成

目录

1、什么是IoC?

2、什么是DI?

3、Bean的作用域

4、Bean的生命周期(Bean对象从创建到销毁的过程)


1、什么是IoC?

        IoC译为"控制反转",IoC容器不是一种技术而是一种思想,其核心在于把Java对象的控权交给Spring全面管理。Spring通过IoC容器管理Java对象的实例化和初始化,控制对象与对象之间的依赖关系,对象的创建到销毁都由IoC容器管理。

2、 什么是DI?

DI译为"依赖注入",IoC是一种思想而DI则是这种思想的具体实现。它可以将对象依赖属性通过配置进行注入。

3、Bean的作用域

1、单实例 Bean对象的地址相同

2、多实例 Bean对象的地址不同

在单例下,对象是IoC容器初始化时创建的。

在多实例下,对象是获取Bean时创建的。

4、Bean的生命周期(Bean对象从创建到销毁的过程)

1、Bean对象创建

2、Bean对象属性赋值

3、Bean后置处理器(初始化之前)

4、Bean对象初始化(调用指 定的初始化方法)

5、Bean后置处理器(初始化之后)

6、Bean对象创建完毕可以使用

7、Bean对象销毁(配置指定销毁的方法)

package com.toonyoo.spring.IoC.life;

public class User {

    private String name;

    public User() {
        System.out.println("1 Bean对象创建,调用无参构造");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("2 Bean对象属性赋值");
        this.name = name;
    }

    public void init(){
        System.out.println("4 调用指定的初始化方法");
    }

    public void destroy(){
        System.out.println(" 7 调用指定的销毁方法");
    }

}
package com.toonyoo.spring.IoC.life;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;


public class MyBeanPost implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("3 Bean后置处理器,初始化之前执行");
        System.out.println(beanName+"::"+bean);
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("5 Bean后置处理器,初始化之后执行");
        System.out.println(beanName+"::"+bean);
        return bean;
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="user" class="com.toonyoo.spring.IoC.life.User" scope="singleton" init-method="init" destroy-method="destroy">
        <property name="name" value="mike"></property>
    </bean>

    <bean id="myBeanPost" class="com.toonyoo.spring.IoC.life.MyBeanPost"></bean>
</beans>
package com.toonyoo.spring.IoC.life;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserTest {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean-life.xml");
        User user = context.getBean("user", User.class);
        System.out.println("6 Bean对象创建完毕可以使用");
        System.out.println(user);
        context.close();// 当调用此方法,就会执行配置文件中指定的销毁方法
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值