`
zhangwei_david
  • 浏览: 470762 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring In Action 继承Bean的配置

 
阅读更多

    Spring 允许提取公用的Bean配置成一个父bean. 从父Bean继承而来的Bean称为子Bean。 子Bean 从父bean继承Bean的配置,包括bean的属性和<bean>元素中的属性,避免了重复配置。 子bean在必要时也可以覆盖继承的配置。父bean可以作为一个配置模板也可以作为一个Bean的实例。 但是,如果希望父bean仅仅作为一个配置模板而不能检索,必须将abstract设置成true,要求Spring不要实例化这个bean。

     必须注意的是不是所有在父<bean>元素中定义的属性都会被继承。例如:autowired和dependency-check属性不会从父bean中继承。   

        有这样一个类:

写道
public class SequenceGeneratorImpl implements SequenceGenerator {
/** 前缀 ***/

private List<String> prefixes;

@Autowired
@Qualifier("dataPrefixGenerator")
private PrefixGenerator prefixGenerator;

/** 后缀 **/
private String suffix;

/** 初始值 **/
private int initial;

/** 计数器 ***/
private int counter;

public SequenceGeneratorImpl() {

}

public String getSequence() {
StringBuffer sb = new StringBuffer();
if (null != prefixGenerator) {
sb.append(prefixGenerator.getPrefix());
}
for (String s : prefixes) {
sb.append(s);
}
sb.append(initial + counter++);
sb.append(suffix);
return sb.toString();
}

public List<String> getPrefixes() {
return prefixes;
}

public void setPrefixes(List<String> prefixes) {
this.prefixes = prefixes;
}

public String getSuffix() {
return suffix;
}

@Required
public void setSuffix(String suffix) {
this.suffix = suffix;
}

public int getInitial() {
return initial;
}

public void setInitial(int initial) {
this.initial = initial;
}

public int getCounter() {
return counter;
}

public void setCounter(int counter) {
this.counter = counter;
}

       配置文件如下:

写道
<bean id="baseSequenceGenerator" abstract="true"
class="SpringInAction.IOC.SequenceGeneratorImpl" p:initial="10000"
p:suffix="F">
<property name="prefixes">
<list>
<value>A</value>
</list>
</property>
</bean>
<bean id="sequenceGenerator" parent="baseSequenceGenerator" />

<bean id="secondSequenceGenerator" parent="baseSequenceGenerator"
p:suffix="C" />

 测试方法:

写道
package SpringInAction.IOC;

import junit.framework.Assert;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:beans.xml")
public class SequenceGeneratorTest {

@Autowired
private SequenceGenerator sequenceGenerator;

@Autowired
private SequenceGenerator secondSequenceGenerator;

@Test
public void testSequence() {
String s = sequenceGenerator.getSequence();
System.out.printf("FirstSequence:%s %n",s);
Assert.assertTrue(s != null);
}

@Test
public void testSecondSequence() {
String s = secondSequenceGenerator.getSequence();
System.out.printf("secondSequence:%s %n",s);
Assert.assertTrue(s != null);
}
}

 测试结果:

写道
secondSequence:20140129A10000C
FirstSequence:20140129A10000F

 

工程见附件

  • IOC.zip (32.6 KB)
  • 下载次数: 0
分享到:
评论

相关推荐

    spring in action英文版

     10.2.2 装载Spring Bean至Tapestry页面中  10.3 集成JavaServer Faces  10.3.1 解析变量  10.3.2 发布请求已处理事件  10.4 集成WebWork  10.4.1 WebWork1  10.4.2 XWork/WebWork2  10.5 小...

    Struts2 in action中文版

    10.4.3 验证继承 235 10.4.4 验证短路效应 236 10.4.5 使用注解声明验证 237 10.5 小结 239 第11章 理解国际化 240 11.1 Struts 2框架和Java i18n 241 11.1.1 使用ResourceBundle和Locale取得本地化文本 241 11.1.2...

    开源框架 Spring Gossip

    第一个 Spring MVC 程式 WebApplicationContext Handler Mapping Handler Interceptor Controller 继承架构 ModelAndView View Resolver Exception Resolver 使用 Controller ...

    Spring面试题

    Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: ☆...

    ssh(structs,spring,hibernate)框架中的上传下载

    TfileDAOHibernate通过扩展Spring提供的Hibernate支持类HibernateDaoSupport而建立,HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute...

    BOS 技术整理

    @Controller spring 表现层 bean @Scope 配置 Action 为多例 Spring Data JPA 代替了 Hibernate "CURD " 但是和Hibernate一样 实现DAO(数据)层的功能 "增删改查" Hibernate 实体类 生成表结构 ---- 领域...

    Struts、Spring、Hibernate、SSH框架总结

    Struts是一个MVC框架,通过配置文件很好地实现了模型与视图的...控制器组件包括ActionServlet,是Struts的核心控制器,还包括自定义的Action类,自定义的Action类继承自Struts提供的org.apache.struts.action.Action

    java命名规范 开发规范

    配置DAO bean、Service Bean、Action Bean及注入的配置; g. 测试; 备注: 1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1}  EntityName,{2}  ActionMethodName 2. 统一命名...

    虚拟数据层 Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27

    Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...

    SSH-Jsp期末考试简答题带答案

    BeanFactory 负责读取bean配置文档、管理bean的加载、实例化、维护bean之间的依赖关系,并负责bean的声明周期。ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能,如国际化...

    struts1和struts2的区别

    另外,按照惯例,在Struts1.x中只有“execute”方法能调用Action, 但在Struts2中并非必要,任何声明为public String methodName() 方法,都能通过配置来调用Action。 最后,和Struts1.x最大的革命性的不同是,...

    教务管理系统(概要设计及详细设计).doc

    中间业务层是通过Spring框架实现的,首先建立一个 BaseAction,它继承了Action类,而其他定义的Action都要继承这个BaseAction。这个B aseAction需要导入AppContext工具类,这个AppContext需要导入Spring中 ;这样一个...

    低清版 大型门户网站是这样炼成的.pdf

    第6章 充分利用spring 2.5的ioc利器统管bean世界 349 6.1 java程序员的春天厚礼—spring 2.5 349 6.1.1 爱上spring 2.5的十大理由 350 6.1.2 一睹spring 2.5芳容 351 6.1.3 spring 2.5拿手戏——控制反转与依赖...

    java面试题

    spring和Hibernate继承后,定义事务管理特性的时候查询为什么要定义为read-only? 答:因为添加、删除和更新都涉及到了数据库的修改,而查询并未涉及到数据库修改,所以只需要定义只读,这样可以提高效率,进行更加...

    从J2SE到J2EE知识点介绍

    4. 为Bean配置集合(List,Set,Map) 266 5. 调用构造方法创建Bean 271 6. 指定Bean引用与自动装配 276 (二) AOP 278 1. AOP简介 278 (三) Spring 3.X 新特性(JavaConfig,SpEL)简介 285 1. JavaConfig 285 2. SpEL...

    web页面模块化异步渲染struts-gpipe.zip

    struts-gpipe与struts和spring的整合:1,struts-gpipe提供注入spring容器bean的功能,用法一致。2,struts-gpipe提供ongl的功能,也就是会自动将模块属性引入 freemarker渲染,这一点是和spring mvc不同的,用过...

    bee4j (1).zip

    3、 slave4j是针对实体包中所有的类生成action service dao jsp,bee4j则限定了只能选择bean包中其中一个类(多选类生成待升级,或者广大朋友自己来完成),目的嘛,自己业务需要; 4、 bee4j能够选择是否生成jsp...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    3.1.4 Action事件 122 3.1.5 值改变事件 125 3.1.6 生命周期事件 128 3.1.7 将监听器绑定到Bean属性 130 3.2 JSF的国际化支持 132 3.2.1 加载国际化资源文件 132 3.2.2 使用国际化消息 134 3.2.3 动态数据国际化 137...

Global site tag (gtag.js) - Google Analytics