`
kevin_in_java
  • 浏览: 30261 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ssh入门学习笔记之spring循环引用

阅读更多

spring采用构造注入的方式可能出现循环引用的问题。

例如类B 和类A相互引用

public class B {
	private A a;
	public B()
	{
		System.out.println("create b with no args");
	}
	public B(A a)
	{
		this.a=a;
		System.out.println("creating b");
	}
	
	public A getA() {
		return a;
	}

	public void setA(A a) {
		this.a = a;
	}
	public void print()
	{
		System.out.println("create b success");
	}
}

 类A

package cn.edu.cqupt.bean;

public class A {
	private B b;
	A(B b)
	{
		this.b=b;
		System.out.println("creating a");
	}
	public B getB() {
		return b;
	}

	public void setB(B b) {
		this.b = b;
	}
	public void print()
	{
	System.out.println("create a success");
	}
}

 测试文件

package cn.edu.cqupt.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.edu.cqupt.bean.A;
import cn.edu.cqupt.bean.B;

public class Test {
	public static void main(String args[])
	{
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		A a = (A)context.getBean("a");
		B b =(B) context.getBean("b");
		if(null!=b.getA())
			System.out.println("not null");
		a.print();
		b.print();
	}
}

 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" >
<beans>
	<bean id="b" class="cn.edu.cqupt.bean.B">
		<property name="a" ref="a"></property>
	</bean>
	<bean id="a" class="cn.edu.cqupt.bean.A">
		<constructor-arg ref="b" />
	</bean>
	
</beans>

 

采用构造注入因调用构造方法时,参数为null,产生异常。

可将另外一个bean的注入方式修改为set注入,注意添加set方法。

另外,spring在容器中创建实例是按照配置文件顺寻的,即,如果上面两个bean的实例化顺序对调,先构造a,后构造b,依然会产生错误。。。至于set注入时可以拿到后面构造出的bean注入(即上面配置文件中,bean b的ref =“a”,个人感觉当发现ref=“a” a未实例化时,实例化a,然后继续实例化b)。以后有空了再研究源码- -找工作伤不起啊 - -!

0
4
分享到:
评论

相关推荐

    SSH整合学习笔记之spring与hibernate简单整合之源码

    SSH整合学习笔记之spring与hibernate简单整合的源码---对应我的博客文章 http://blog.csdn.net/wanghantong/article/details/6653482

    ssh学习笔记1 ssh学习笔记1

    ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1 ssh学习笔记1

    SSH框架学习笔记,学习交流

    学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记学习笔记,框架,SSH,学习笔记

    SSH学习笔记3 SSH学习笔记3

    SSH学习笔记3主要聚焦于三个Java企业级开发框架——STRUTS、SPRING和HIBERNATE的集成与应用。这三个框架是Java后端开发中非常重要的组件,它们各自负责不同的层面,共同构建了一个强大的MVC(Model-View-Controller...

    SSH学习笔记4 SSH学习笔记4

    SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记

    SSH学习笔记7 SSH学习笔记7

    SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记

    SSH学习笔记2 SSH学习笔记2

    SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记

    SSH学习笔记9 SSH学习笔记9

    SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记

    SSH学习笔记8 SSH学习笔记8

    SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记 SSH学习笔记

    SSH-框架笔记

    学习SSH框架笔记,不仅可以掌握这三个框架的基本用法,还能深入理解Java Web开发中的设计原则和最佳实践。这份笔记内容广泛,包括各个框架的主要概念、配置、API使用、实战案例等,对于提升Java开发技能大有裨益。

    SSH学习笔记6 SSH学习笔记6

    在压缩包中的"spring1.3"文件可能是SSH学习笔记的一个章节,专注于Spring框架与SSH的集成。Spring是一个广泛使用的Java应用框架,它可以与SSH一起使用,实现远程调用服务(如Hessian和 Burlap)或使用Spring的JMX...

    ssh学习笔记

    根据提供的文件信息,可以看出这份学习笔记主要关注于SSH(Struts、Spring 和 Hibernate)框架的配置与使用。接下来,我们将详细解析这些知识点。 ### 一、Spring 框架依赖 Spring 是一个开源的轻量级Java开发框架...

    spring2.5学习笔记以及SSH

    Spring 2.5 学习笔记是针对这个经典版本的框架进行深入理解的教程,而SSH则代表了Spring、Struts和Hibernate这三个Java Web开发中最常用的开源框架的整合。这篇笔记详细介绍了如何在项目中使用Spring 2.5以及如何与...

    SSH学习笔记5 SSH学习笔记5

    这篇SSH学习笔记将深入探讨SSH的基础概念、工作原理、配置与应用。 一、SSH基础 1.1 SSH概述 SSH最初设计为替代不安全的Telnet协议,它通过加密所有传输的数据,包括用户名、密码等敏感信息,从而防止被窃听。SSH...

    SSH整合学习笔记之struts2+spring+hibernate+c3p0源码

    本学习笔记将深入探讨这四个组件如何协同工作,构建出强大的企业级应用。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它提供了处理用户请求、控制应用流程的能力。Struts2的核心是...

    Spring学习笔记 包括SSH的整合

    总之,Spring学习笔记对于理解SSH整合的全过程及其背后的设计原则非常有帮助,对于希望深入学习Java Web开发的开发者来说是一份宝贵的资源。通过实践和阅读这样的笔记,开发者可以更好地掌握这三大框架的使用,提升...

    J2EE (SSH)学习笔记

    **J2EE (SSH) 学习笔记** 在IT领域,Java企业版(J2EE)是一个用于构建大型、分布式、多层企业级应用的平台。为了简化开发过程并提高可维护性,开发者通常会使用一些框架,SSH(Struts、Spring、Hibernate)就是...

    ssh整合学习笔记(图解)

    下面,我们将基于提供的“ssh整合学习笔记(图解)”这一主题,深入探讨SSH整合的关键知识点,以及如何在实践中运用这些框架。 ### Spring框架 Spring框架是一个开源的应用框架,其核心特性包括依赖注入(DI)、...

Global site tag (gtag.js) - Google Analytics