java init方法

init调用

init和destroy对应,一个加载一个销毁

有时候有一种场景是:初始化一个对象(bean)后立即初始化(加载一些数据)

配置类

@Configuration
@ComponentScan("springTest2")
public class ConfigTest {
	@Bean(initMethod = "init", destroyMethod = "destroy")
	Test1 test1() {
		return new Test1();
	}
}

//调用

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConfigTest.class);
System.out.println("#################################");
context.close();
//@Configguration注解是告诉spring这个类是一个配置类
//@ComponentScan则是指定需要spring来扫描的包,相当于xml中的context:component-scan属性
//@Bean后边的initMethod和destroyMethod就是在声明这是一个baen的同时指定了init和destroy方法,方法名从功能实现上来说可以随意。

配置文件

<?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="test2" class="com.luoyu.initTest.Test2">
    </bean>

    <bean id="initOrDestroyTest" class="com.luoyu.initTest.Test1" init-method="init" destroy-method="destroy">
    </bean>
</beans>

// 调用

ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext("spring.xml");
System.out.println("#################################");
context1.close();

总结:

使用配置文件xml的方式,可以理解为加载文件中每一个bean对象对应的构造函数,如果有对应的方法,如:init-method,那么也会进行执行

整理自【涂宗勋】:

https://tuzongxun.blog.csdn.net/article/details/53580695?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

init和clinit的区别

java在编译后会在字节码文件中生成<init>方法,称为实例构造器:变量初始化/语句块/构造函数 

java在编译后会在字节码文件中生成<clinit>方法,称为类构造器:静态变量初始化/静态块

<clinit>方法是在类加载过程中执行的,而<init>是在对象实例化执行的,所以<clinit>一定比<init>先执行

整理自【Zackpard】:

https://blog.csdn.net/sujz12345/article/details/52590095?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162507098716780255242348%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162507098716780255242348&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-12-52590095.first_rank_v2_pc_rank_v29&utm_term=java+init&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值