Spring will invoke specific constructor no matter this constructor is public or private

本文通过一个具体的案例,展示了Spring框架如何在初始化Bean时调用构造器,并证实了无论构造器是否为公共访问级别,Spring都会进行调用。此外,文章还探讨了使用Spring结合工厂模式实例化对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I have confirm this conclusion via debugging my own code.

Spring will invoke specific constructor no matter this constructor is public or private

This is my demo:

package com.frank.zk;

/**
 * 
 * @author liushaomingdev@163.com
 *
 */
public class ZooKeeperManager extends ZookeeperClient implements Watcher {
	private static ZooKeeperManager INSTANCE;
	private ZooKeeperManager() {
		INSTANCE = this;
	}
	public static ZooKeeperManager getInstance() {
		return INSTANCE;
	}
}

this is configuration file--applicationContext.xml

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
	<bean id="zookeeper" class="com.frank.zk.ZooKeeperManager" lazy-init="false" />
</beans>



Program execute to this break point finally.

private ZooKeeperManager() {
	INSTANCE = this;
}


So,  below conclusion is confirmed:
Spring will invoke specific constructor no matter this constructor is public or private


This program use Spring to initialize singleton creating bean. It also uses Factory pattern to instantiate object.

Demo code

// bean 'ZooKeeperManager' is registered as singleton bean in Spring Container after this line code.
ApplicationContext appContext = new ClassPathXmlApplicationContext("appContext.xml");

ZooKeeperManager manager = ZooKeeperManager.getInstance();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值