- 浏览: 1229644 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
现有Bean2,Bean3,Bean4,Bean5
可观察到Bean2引用了其它三个Bean,而Bean3的属性为id,name,date;Bean4属性为id,name;Bean5为date
那么是不是可以将id,name抽取出来进行配置,从而相当于构建一个继承关系。
代码:
package com.lwf.bean; public class Bean2 { private Bean3 bean3; private Bean4 bean4; private Bean5 bean5; public Bean3 getBean3() { return bean3; } public void setBean3(Bean3 bean3) { this.bean3 = bean3; } public Bean4 getBean4() { return bean4; } public void setBean4(Bean4 bean4) { this.bean4 = bean4; } public Bean5 getBean5() { return bean5; } public void setBean5(Bean5 bean5) { this.bean5 = bean5; } }
package com.lwf.bean; import java.util.Date; public class Bean3 { private int id; private String name; private Date date; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }
package com.lwf.bean; public class Bean4 { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.lwf.bean; public class Bean5 { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.lwf.bean; import java.beans.PropertyEditorSupport; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class UtilDatePropertiesEditor extends PropertyEditorSupport { private String format="yyyy/MM/dd" ; public void setAsText(String text) throws IllegalArgumentException { SimpleDateFormat sdf = new SimpleDateFormat(format); try { Date dateVal = sdf.parse(text); this.setValue(dateVal); } catch (ParseException e) { e.printStackTrace(); } } public void setFormat(String format){ this.format = format; } }
配置文件:
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="java.util.Date"> <bean class="com.lwf.bean.UtilDatePropertiesEditor"> <property name="format" value="yyyy/MM/dd"/> </bean> </entry> </map> </property> </bean> <bean id="bean2" class="com.lwf.bean.Bean2"> <property name="bean3" ref="bean3"/> <property name="bean4"> <ref bean="bean4"/> </property> <property name="bean5"> <bean id="bean5" class="com.lwf.bean.Bean5"> <property name="age" value="30"></property> </bean> </property> </bean> </beans>
applicationContext_1.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean id="parentBean" abstract="true"> <property name="id" value="1"/> <property name="name" value="zhang"/> </bean> <bean id="bean3" class="com.lwf.bean.Bean3" parent="parentBean"> <property name="date" value="2010/05/19"/> </bean> <bean id="bean4" class="com.lwf.bean.Bean4" parent="parentBean"/> </beans>
测试类:
package com.lwf.client; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.lwf.bean.Bean2; public class Client { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext*.xml"); Bean2 bean2 = (Bean2)ctx.getBean("bean2"); System.out.println(bean2.getBean3().getName()); System.out.println(bean2.getBean3().getId()); System.out.println(bean2.getBean3().getDate()); System.out.println(bean2.getBean4().getId()); System.out.println(bean2.getBean4().getName()); System.out.println(bean2.getBean5().getAge()); } }
输出:
2010-05-19 10:14:28,122 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0: display name [org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0]; startup date [Wed May 19 10:14:28 CST 2010]; root of context hierarchy 2010-05-19 10:14:28,310 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_start\bin\applicationContext.xml] 2010-05-19 10:14:28,716 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from file [D:\workdirlocal\spring_start\bin\applicationContext_1.xml] 2010-05-19 10:14:28,794 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@bfbdb0]: org.springframework.beans.factory.support.DefaultListableBeanFactory@16df84b 2010-05-19 10:14:28,981 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16df84b: defining beans [customEditorConfigurer,bean2,parentBean,bean3,bean4]; root of factory hierarchy zhang 1 Wed May 19 00:00:00 CST 2010 1 zhang 30
注意在配置文件里面定义的继承关系
依赖对象的注入,可以采用: * ref属性 * <ref>标签 * 内部<bean>的定义 ---------------------------------------------------------------------------------------------------------- 如何将公共的注入定义描述出来: * 定义公共的注入属性(通过<bean>标签定义,指定abstract="true") * 具有相同注入属性的类,指定parent属性即可
发表评论
-
spring 3 和mybatis 3集成,并用junit4进行测试
2011-11-04 14:01 1465转:spring 3 和mybatis 3集成,并用junit ... -
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法
2011-11-03 16:17 2748用Myeclipse开发struts时,配置struts-co ... -
Strut2+Spring整合框架搭建
2011-11-02 22:19 1078参考:http://lukuijun.iteye.com/bl ... -
Spring+hibernate延迟加载报错解决办法之二
2010-06-29 17:28 1213在做删除操作的时候出现了org.springframework ... -
Spring+hibernate延迟加载报错解决办法之一
2010-06-29 17:25 1213我们在项目中一般都会使用Spring来管理Hibernate的 ... -
Spring项目中怎么配置log4j
2010-05-27 11:10 1586在spring项目中配置log4j http://blogg ... -
Spring与Struts集成方式三
2010-05-26 17:11 1152在集成方式一和二中我们是在web.xml中加入配置代码: & ... -
Spring与Struts集成方式二
2010-05-26 14:49 1045在集成方式一的基础上做改进: 第一种集成方案是在action ... -
Spring与Struts集成方式一
2010-05-25 14:13 916我们在Struts中在action类中调用Model层组件进行 ... -
Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)
2010-05-24 17:15 2770采用编程式事务 事务主要分为:编程式事务和声明式事务 ... -
修改Eclipse配置,使得在配置文件中完成自动完成功能。
2010-05-24 15:10 2300在Eclipse中引入spring的配置文件applicati ... -
Spring aop 基于schema的AOP支持及JoinPoint的使用、如何使用CGLIB代理
2010-05-24 14:52 4130基于schema的aop只是将配置写到配置文件中。 代 ... -
Spring AOP 概念理解及@AspectJ支持
2010-05-20 15:56 1585为了更好的理解Spring简介一文http://quicker ... -
Spirng AOP简介
2010-05-19 17:28 2285AOP 面向切面编程(AOP)通过提供另外一种思考程序结构的 ... -
Spring Bean中的自动装配——byType
2010-05-19 17:08 1183自动装配byType即通过查找类属性在配置文件中bean中定义 ... -
Spring Bean中的自动装配——byName
2010-05-19 16:34 3153自动装配(autowire)协作者 Spring IoC容器 ... -
Spring Bean的作用域:用Spring来解决Struts中Action的单实例问题
2010-05-19 10:47 1562我们知道在Struts中Action是从map中拿出来的,是单 ... -
Spring Set注入:基本类型、List、Map、Set、Array、Date类型注入
2010-05-18 15:58 11550Spring依赖注入有两种:构造器注入与Set注入 其中以S ... -
spring 初探
2010-05-17 16:53 1256Spring核心设计思想为IOC ... -
简单DAO层示例
2010-05-14 17:30 2081在使用spring架构之前,我们怎么设计自己的DAO层的呢? ...
相关推荐
本文将深入探讨Spring Bean的继承与自动装配。 首先,让我们了解Bean的基本定义。在Spring配置文件中,`<beans>`元素作为根元素,包含了一系列`<bean>`子元素。每个`<bean>`元素定义了一个Bean实例,它由一个唯一的...
Spring的`<beans>`和`<bean>`元素及其属性提供了强大的配置能力,使开发者能够灵活地定义、配置和管理应用程序中的组件。通过深入了解这些元素和属性,开发人员可以更有效地利用Spring框架的功能,构建更加健壮和可...
当我们说“Bean的继承配置”时,实际上是指一个Bean定义可以继承另一个Bean定义的部分或全部属性。 在XML配置中,我们可以使用`<bean>`标签的`parent`属性来指定父Bean。例如: ```xml <bean id="parentBean" ...
#### Spring Bean 定义继承 Bean 定义也可以支持继承,子 bean 可以继承父 bean 的属性。 - **示例**:创建两个 bean 定义,其中一个继承另一个,并覆盖某些属性。 #### Spring 依赖注入 Spring 支持多种依赖...
1. **添加Bean定义**:在Spring容器中,我们可以通过`BeanDefinitionRegistry` 接口动态地注册新的bean定义。首先创建`BeanDefinition`对象,然后在`postProcessBeforeInitialization` 或 `...
Bean的继承是指在Spring容器中,一个子Bean定义可以从一个父Bean定义中继承配置信息。这并不意味着Java类的继承关系,而是针对配置元数据的一种抽象。通过继承,子Bean可以在保留父Bean某些配置的同时,对某些属性...
获取 Spring 里注册的 Bean 对象可以使用四种方法:继承 BaseDispatchAction、实现 BeanFactoryAware、使用 ApplicationContext、使用 @Autowired。每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的...
在Spring中,一个bean可以基于另一个bean定义,这意味着它将继承父bean的所有属性和配置,包括默认的初始化方法、销毁方法、属性值等。这样,我们可以在父bean中定义通用的配置,而在子bean中只定义特有的部分,避免...
- **@Scope**:定义Bean的作用域,如单例(singleton)、原型(prototype)等。 - **@PostConstruct** 和 **@PreDestroy**:标记初始化和销毁方法,Spring会在Bean创建后和销毁前调用这些方法。 在`spring_autozp_...
- **功能概述**:`<beans>`是Spring配置文件的根元素,用来包含一个或多个`<bean>`元素,用于定义Spring容器管理的各种Bean。 #### 二、`<bean>`元素详解 - **基础配置**: - **`class`属性**:表示JavaBean的全...
1. `<beans>` 根元素:这是Spring配置文件的起点,它包含了所有的Bean定义。Spring容器会解析这个文件并创建相应的Bean实例。 2. `<bean>` 元素:这是Spring配置中最常见的元素,它定义了一个特定的Java对象,即...
2. **Spring管理Job的生命周期**:将Job类定义为Spring的Bean,这样Job实例的创建、初始化、销毁等生命周期管理就交给了Spring,而不是Quartz。这样做的好处是,Job可以轻松地利用Spring的其他服务,如数据库连接池...
除了基本的`@Component`家族,Spring还提供了一些高级注解,如`@Scope`用于定义Bean的作用域,`@Lazy`用于延迟初始化Bean,`@Qualifier`用于在多个相同类型的Bean中指定特定的一个。 ### **总结** Spring的自动...
在Spring中,我们可以定义Bean的继承关系,使得子类Bean可以继承父类Bean的配置属性。这在处理具有相似属性或行为的Bean时非常有用。例如,你可以定义一个基础的DAO Bean配置,然后让具体的DAO Bean继承它,从而...
- ChildBeanDefinition则用于表示从父BeanDefinition派生出来的Bean定义,它会继承父定义并可以覆盖或添加额外的属性。 此外,BeanDefinition还涉及到的类和接口有: - AttributeAccessor接口,允许在任意对象上...
Spring实战之抽象Bean和子Bean定义与用法示例 在Spring框架中,抽象Bean和子Bean是两个非常重要的概念,它们在Bean的定义和使用中扮演着关键角色。抽象Bean是指不能被实例化的Bean,而子Bean则是继承了抽象Bean的...
此外,Spring还允许定义抽象Bean(abstract bean),它们不用于实例化,而是作为其他Bean的模板。一个Bean可以通过设置`abstract`属性为`true`来声明为抽象Bean,或者如果未指定`class`属性,Spring也会将其视为抽象...
在Spring容器启动时,配置文件或注解中的bean定义会被解析成BeanDefinition对象,然后由容器进行管理。本文将深入探讨BeanDefinition的内部结构和主要属性。 首先,BeanDefinition接口继承了AttributeAccessor和...
首先,Spring IOC容器在加载时并不会显示对不同配置文件中重复的bean id进行报错提示,当遇到有重复的bean定义时,Spring采取的策略是把后面加载的配置覆盖前面加载的配置,没有任何警告和提示。这使得我们在团队...