`
zhangwei_david
  • 浏览: 477007 次
  • 性别: 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里注册Bean的四种方法

    这种方法需要在 Spring 配置文件中添加一个 Bean,例如 `&lt;bean id="serviceLocator" class="com.am.oa.commons.service.ServiceLocator" singleton="true" /&gt;`。然后,我们可以实现 BeanFactoryAware 接口,使用 ...

    Web项目中获取SpringBean与在非Spring组件中获取SpringBean.pdf

    &lt;bean id="springUtil" class="org.coderecord.ccms.web.action.util.SpringUtil" /&gt; ``` 使用这个工具类,我们可以在程序的任何地方获取Bean,例如: ```java YourClass obj = (YourClass) SpringUtil.getObject...

    Spring Boot in Action-chapter 2 sample

    ### Spring Boot in Action – Chapter 2 Sample:开发第一个Spring Boot应用 #### 一、章节概述 本章主要介绍如何利用Spring Boot快速启动一个项目,并通过实际案例深入理解Spring Boot自动配置的功能及其工作...

    struct和spring整合的配置

    4. 创建SpringAction 创建一个继承自Spring的ActionSupport类的Action,这样Struts会从Spring容器中查找并注入对应的Bean。例如: ```java public class MyAction extends SpringActionSupport { private ...

    spring管理struts的action的代码

    为了实现Spring对Struts Action的管理,我们需要在Web应用中配置Spring容器,并通过Spring来创建和管理Struts中的Action实例。这样做的好处在于,Action实例的生命周期和依赖关系都可以由Spring容器来管理,提高了...

    spring整合struts2与hibernate核心配置文件

    2. **Struts2配置**:启用Spring插件,配置Action类为Spring管理的bean。 3. **Hibernate配置**:配置数据库连接信息,定义实体类映射,开启自动扫描实体类。 4. **Action类**:通常标记为`@Component`,并使用`@...

    Spring+Struts+Hibernate比较详细的整合配置方案

    - 创建Spring配置文件(如`applicationContext.xml`),配置Bean定义,包括Service层、DAO层以及Action类等的实例化和依赖注入。 - 使用Spring的AOP功能,实现事务管理。例如,可以定义一个事务切面,对需要进行...

    Struts2+spring注解配置

    - `@ParentPackage` 用于指定当前 Action 继承的 Struts2 包,通常用来继承配置好的拦截器栈。例如,`@ParentPackage("struts-default")` 将使用默认的 Struts2 拦截器配置。 3. **Namespace 注解** - `@...

    Spring和Struts整合---继承ActionSupport的方法

    2. **配置Spring**: 在Spring的配置文件中声明Action类,通过`&lt;bean&gt;`标签定义,并设置其属性以注入依赖。 3. **配置Struts**: 在struts.xml中配置Action,但不再定义Action类,而是引用Spring中定义的bean。 4. *...

    struts2 spring2 hibernate3 配置

    - **配置Bean**:在`applicationContext.xml`中定义Action类的Bean,以便Spring管理,如`&lt;bean id="loginAction" class="com.test.action.LoginAction"/&gt;`。 - **整合Struts2**:在`struts.xml`中,通过`...

    Spring整合Struts

    通过在struts-config.xml和action-servlet.xml之间建立的桥梁,即action-mapping,可以实现Struts Action与Spring Bean之间的映射。 #### 方案二:继承Spring的ActionSupport类 另一种整合方式是通过继承Spring的...

    Spring集成Struts的三种方案

    这需要在`struts-config.xml`中配置`ContextLoaderPlugIn`插件,指定`contextConfigLocation`属性为Spring的配置文件路径,如`WEB-INF/applicationContext.xml`,这样Struts Action就能访问到Spring上下文中的Bean。...

    SSH struts2+Hibernate3+Spring2配置详解

    1. **beans.xml**:这是Spring的配置文件,定义了Bean的实例化、依赖关系等。例如: ```xml &lt;bean id="userService" class="com.example.UserService"&gt; &lt;/bean&gt; ``` 这里定义了一个UserService Bean,并注入...

    整合Spring与Struts的几种方法

    3. **使用DelegatingActionProxy代理Action**:在`struts-config.xml`中,所有Action的type属性改为`DelegatingActionProxy`,而非具体类名,然后在Spring配置文件中定义对应的bean。这是最灵活的整合方式,因为它...

    最新版本Struts2.3.12+Spring3.2.2+Hibernate4.2.0框架配置详细步骤

    - **Spring管理Hibernate SessionFactory**:在Spring配置文件中,使用SessionFactoryBean配置SessionFactory,并配置事务管理器。 - **Struts2与Spring整合**:配置Struts2-Spring插件,使Action可以通过Spring管理...

    Spring+SpringMVC配置加载顺序1

    在SpringInAction的示例代码中,你可以看到如何自定义这些配置来适应你的应用需求。理解这些加载顺序和配置方式对于调试和优化Spring应用的性能至关重要,因为它们直接影响到Spring容器的初始化以及请求的处理流程。

Global site tag (gtag.js) - Google Analytics