文档章节

spring中bean的singleton属性

绿林小子
 绿林小子
发布于 2015/11/17 15:15
字数 279
阅读 167
收藏 1
    1.  UserDao.java
package com.lxh.springSingleton;

public interface UserDao {
	// 保存User
	public void save();
}
    2.  UserDaoImpl.java
package com.lxh.springSingleton;

public class UserDaoImpl implements UserDao {

	@Override
	public void save() {
		System.out.println("save user ...");
	}

}
    3.  UserService.java
package com.lxh.springSingleton;

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserService {
	// ApplicationContext
	public static ApplicationContext context = new ClassPathXmlApplicationContext(
			UserService.class.getResource("").toString()
					+ "/applicationContext.xml");
	// 日志
	private static Logger logger = Logger.getLogger(UserService.class);
	// 属性
	private UserDao userDaoImpl;

	// set,get
	public UserDao getUserDaoImpl() {
		return userDaoImpl;
	}

	public void setUserDaoImpl(UserDao userDaoImpl) {
		this.userDaoImpl = userDaoImpl;
	}

	// userService
	public static void main(String[] args) {
		System.out.println();
		UserService us = (UserService) context.getBean("userService");
		UserService us2 = (UserService) context.getBean("userService");
		
		logger.info("*****"+us +","+us2+"*****");
		logger.info("*****"+us.userDaoImpl+","+us2.userDaoImpl+"*****");
	
	}
}
    4.  applicationContext.xml (singleton="false")
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="userDao" class="com.lxh.springSingleton.UserDaoImpl" singleton="false"/>
	<bean id="userService" class="com.lxh.springSingleton.UserService" singleton="false">
		<property name="userDaoImpl" ref="userDao"/>
	</bean>
</beans>
    5.  applicationContext.xml (singleton="true")
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="userDao" class="com.lxh.springSingleton.UserDaoImpl" singleton="true"/>
	<bean id="userService" class="com.lxh.springSingleton.UserService" singleton="true">
		<property name="userDaoImpl" ref="userDao"/>
	</bean>
</beans>
    6.  singleton="false" 运行结果

    7.  singleton="true"  运行结果

    8.  小结:

        通过以上分析可以得出结论:在spring的bean配置中,若singleton=“false”,则该bean为非单例,即每请求一次,就会重新创建一个;若singleton=“true”则结论相反。

        补充:默认情况下,singleton=“true”.




© 著作权归作者所有

绿林小子
粉丝 5
博文 131
码字总数 45566
作品 0
福州
私信 提问
Spring容器中Bean的作用域

当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个Spring IoC容器中,使用singl...

摆渡者
2014/02/26
3.9K
1
全国监理工程师培训班结业证书 广东 浙江 工程师证 工程师证样本

什么是Spring beans? Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中 的形式定义...

spring小鸟
2018/08/26
0
0
Spring温故而知新 - bean的装配

按条件装配bean 就是当满足特定的条件时Spring容器才创建Bean,Spring中通过@Conditional注解来实现条件化配置bean package com.sl.ioc;import org.springframework.context.annotation.Bean;...

Java-老刘
2018/05/07
90
0
Spring中管理Bean依赖注入之后和Bean销毁之前的行为

对于Singleton作用域的Bean,Spring容器将会跟踪它们的生命周期,容器知道何时实例化结束、何时销毁。Spring可以管理Bean在实例化结束之后和Bean销毁之前的行为。 Bean依赖关系注入之后的行为...

摆渡者
2014/03/06
5.4K
0
解决Spring中singleton的Bean依赖于prototype的Bean的问题

当Spring容器中作用域不同的Bean相互依赖时,可能出现一些问题,例如:一个作用域为Singleton的Bean(设为A)依赖于一个作用域为prototype的Bean(设为B)。由于A是单例的,只有一次初始化的...

摆渡者
2014/03/06
3.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
31分钟前
4
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
39分钟前
4
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
45分钟前
6
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
48分钟前
4
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
51分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部