【Java】Bean的生命周期——print大法带你了解Bean的生命周期(初探)

今天面试被问到Bean的生命周期,我就巴拉巴拉说了5个步骤,最后反问阶段面试官说不够详细。今天就来实战梳理一下!

一、定义一个Student类

为了方便看到生命周期过程,我直接使用print大法;
另外,将类交给Spring容器管理可以通过xml文件形式和注解形式,接下来我都实现一下

1、xml形式

/* by 01022.hk - online tools website : 01022.hk/zh/careers.html */
package com.goahead.bean;

public class Student1 {
    private String name;

    public Student1() {
        System.out.println("1、实例化");
    }

    public Student1(String name) {
        this.name = name;
    }
    public void setName(String name) {
        System.out.println("2、依赖注入");
        this.name = name;
    }

    public void myInit() {
        System.out.println("3、初始化");
    }

    public void myDestroy() {
        System.out.println("5、销毁");
    }
}

2、注解形式

package com.goahead.bean;

import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
public class Student2 {
    private String name;

    public Student2() {
        System.out.println("1、实例化");
    }

    public Student2(String name) {
        this.name = name;
    }

    @Value("goahead")
    public void setName(String name) {
        System.out.println("2、依赖注入");
        this.name = name;
    }

    @PostConstruct
    public void myInit() {
        System.out.println("3、初始化");
    }

    @PreDestroy
    public void myDestroy() {
        System.out.println("5、销毁");
    }
}

二、将Student类交给Spring容器

1、xml文件形式

需要在resource文件夹下定义一个xml文件

<?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="student" class="com.goahead.bean.Student" init-method="myInit" destroy-method="myDestroy">
        <property name="name" value="goahead"/>
    </bean>
</beans>

2、注解形式(推荐)

注解形式我们只需在Student2类上加相应的注解,然后加一个配置类

在config目录下创建一个 AppConfig

package com.goahead.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.goahead.bean")  // 扫描包路径
public class AppConfig {
}

三、测试

由于我们第二步实现了两种方式,所以测试也对应两种方式

1、对应xml形式

import com.goahead.bean.Student1;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppTest1 {
    @Test
    public void test1() {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Student1 student1 = context.getBean(Student1.class);
        System.out.println("4、使用Bean");

        ((ClassPathXmlApplicationContext)context).close();
    }
}

2、注解形式

import com.goahead.bean.Student2;
import com.goahead.config.AppConfig;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class AppTest2 {
    @Test
    public void test2() {
        // 使用AnnotationConfigApplicationContext替代ClassPathXmlApplicationContext
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(AppConfig.class);

        Student2 student = context.getBean(Student2.class);
        System.out.println("4、使用Bean");

        context.close();  // 触发销毁方法
    }
}

四、测试结果

1、xml形式

image

2、注解形式

image

当前,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来前所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等前沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、前瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值