当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决
在Spring里面,当一个singleton bean依赖一个prototype bean,因为singleton bean是单例的,因此prototype bean在singleton bean里面也会变成单例.
这个怎么解决呢???可以使用Spring提供的lookup-method来注入。
举例说明:先列出相关类:代码中的说明足够说明问题。user类:prototype bean
package com.cn.pojo;import java.io.Serializable;public class User implements Serializable{/*** */private static final long serialVersionUID = 1L;private int userId;private String userName;private String userPwd;private String userInfo;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPwd() {return userPwd;}public void setUserPwd(String userPwd) {this.userPwd = userPwd;}public String getUserInfo() {return userInfo;}public void setUserInfo(String userInfo) {this.userInfo = userInfo;} }
LookupMethod类:singleton bean
package com.cn.springTest;import com.cn.pojo.User;/*** LookupMethod为singleton,user为propotype* 当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决* @author Administrator**/
public class LookupMethod {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
核心配置文件:
<!-- user userbean --><bean id ="user" class="com.cn.pojo.User" scope="prototype"><property name="userId" value="1" /><property name="userName" value="userName" /><property name="userPwd" value="userPwd" /><property name="userInfo" value="userInfo" /></bean><!-- lookupMethod LookupMethod为单例,user为原型的获取实例--><bean id ="lookupMethod" class="com.cn.springTest.LookupMethod"><!-- <property name="user" ref="user"/> --> <!-- 这种写法会将user当着单例来获取--><lookup-method name="getUser" bean="user"/><!--lookup-method方式会将user当着原型来获取--></bean>
测试类:SpringLookupMethod
import com.cn.util.SpringContextUtil;public class SpringLookupMethod {public static void main(String[] args) {ApplicationContext actx = new ClassPathXmlApplicationContext("ApplicationContext.xml");actx.getBean("springContextUtil");LookupMethod lookupMethod = (LookupMethod) SpringContextUtil.getBean("lookupMethod");System.out.println(lookupMethod);LookupMethod lookupMethod1 = (LookupMethod) SpringContextUtil.getBean("lookupMethod");System.out.println(lookupMethod1);System.out.println(lookupMethod.getUser());System.out.println(lookupMethod1.getUser());System.out.println(lookupMethod.getUser());System.out.println(lookupMethod1.getUser());}}
注:在测试的时候除了spring相关包,发现缺少cglib-jar包。
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.1</version>
</dependency>
转载于:https://www.cnblogs.com/xubiao/p/5852445.html
当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决相关推荐
- java spring bean配置文件_Spring基于xml文件配置Bean过程详解
这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...
- 启动SpringBoot项目,显示bean依赖注入失败,Error create bean with name ‘XXX‘
从gitee上面download了一个项目,启动一个微服务模块一直显示Error create bean with name 'XXX' 一般情况下,这个问题很常见,小编我是遇到了好几次,但是一直懒, ...
- Spring(二)--FactoryBean、bean的后置处理器、数据库连接池、引用外部文件、使用注解配置bean等...
实验1:配置通过静态工厂方法创建的bean [通过静态方法提供实例对象,工厂类本身不需要实例化!] 1.创建静态工厂类 public class StaticFactory {private sta ...
- Spring-IOC—基于XML配置Bean
Spring-IOC-基于XML配置Bean 1.Spring 配置/管理 bean 介绍 1.Bean 管理包括两方面 1.创建bean对象 2.给bean注入属性 2.Bean配置方式 1.基于x ...
- Spring学习(六)-Bean作用域与基于注解的配置
Bean作用域 在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.Spring一般采用sc ...
- bean注入属性_摆脱困境:将属性值注入配置Bean
bean注入属性 Spring Framework对将从属性文件中找到的属性值注入到bean或@Configuration类中提供了很好的支持. 但是,如果将单个属性值注入这些类中,则会遇到一些问题. ...
- 摆脱困境:将属性值注入配置Bean
Spring Framework对将从属性文件中找到的属性值注入到bean或@Configuration类中提供了很好的支持. 但是,如果将单个属性值注入这些类中,则会遇到一些问题. 这篇博客文章指出 ...
- 4. Spring 如何通过 XML 文件配置Bean,以及如何获取Bean
在 Spring 容器内拼凑 bean 叫做装配.装配 bean 的时候,你是在告诉容器,需要哪些 bean ,以及容器如何使用依赖注入将它们配合在一起. 理论上,bean 装配的信息可以从任何资源获 ...
- spring 通过工厂方法配置Bean
概要: 通过调用静态工厂方法创建Bean 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当client须要对象时,仅仅须要简单地调用静态方法,而不用关心创建对象地细节. 要声明通过静 ...
最新文章
- 解决Selenium与firefox浏览器版本不兼容问题
- jdbcTemplate 后台接口中的分页
- java 消息传递示例_java actor模型和消息传递简单示例
- (37)zabbix snmp类型 无需安装agent也能监控
- SAP Fiori Elements List Report 里的表格类型(tableType)是如何决定出来的
- C#中搜索关键词高亮显示
- python脚本之家 包的创建和调用_python基础之包的导入和__init__.py的介绍
- MySQL锁系统总结
- 24-[模块]-re
- 查找树的指定层级_非递归层次遍历方法实现二叉树中指定节点的层次数查找
- Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理、会员管理、订单管理、促销管理、财务管理+通用版商城前后端电商系统+电商用户数据大屏看板
- 2021年中国超大容量耐磨喷油器市场趋势报告、技术动态创新及2027年市场预测
- xml Android 冒号,冒号字符在XML元素序列化过程中被编码为x003A
- JavaScript中的数据结构及实战系列(1):队列
- html播放flv直播源码,使用flv.js实现HTML5播放FLV视频文件
- 微信小程序使用webview打开pdf文档及显示网页内容
- LeetCode 229 求众数 II
- 李纯明博士的RSF算法源码.水平集医学图像分割
- git从远程仓库拉取指定日期版本的代码到本地
- 海外有哪些免费的0元虚拟主机(免费空间或者免费虚拟主机)