在基于spring框架开发的项目中,如果有多个bean都是一个类的实力,如配置多个数据源时,大部分配置的属性都一样,只有少部分不一样,经常是copy上一个的定义,然后修改不一样的地方。其实spring bean定义也可以和对象一样进行继承。
示例如下:
<bean id="testBeanParent" abstract="true" class="com.wanzheng90.bean.TestBean">
<property name="param1" value="父参数1"/>
<property name="param2" value="父参数2"/>
</bean>
<bean id="testBeanChild1" parent="testBeanParent"/>
<bean id="testBeanChild2" parent="testBeanParent">
<property name="param1" value="子参数1"/>
</bean>
testBeanParent是父bean,其中abstract=“true”表示testBeanParen不会被创建,类似于于抽象类。其中testBeanChild1、testBeanChild2继承了testBeanParent、,其中testBeanChild2重新对param1属性进行了配置,因此会覆盖testBeanParent
对param1属性属性的配置。
代码如下:
TestBean
public class TestBean {
private String param1;
private String param2;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
}
App:
public class App
{
public static void main( String[] args )
{
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
TestBean testBeanChild1 = (TestBean) context.getBean("testBeanChild1");
System.out.println( testBeanChild1.getParam1());
System.out.println( testBeanChild1.getParam2());
TestBean testBeanChild2 = (TestBean) context.getBean("testBeanChild2");
System.out.println( testBeanChild2.getParam1());
System.out.println( testBeanChild2.getParam2());
}
}
app main函数输出:
父参数1
父参数2
子参数1
父参数2
相关推荐
Spring的`<beans>`和`<bean>`元素及其属性提供了强大的配置能力,使开发者能够灵活地定义、配置和管理应用程序中的组件。通过深入了解这些元素和属性,开发人员可以更有效地利用Spring框架的功能,构建更加健壮和可...
例如,通过使用`abstract`属性和`parent`属性来减少重复配置,使用`autowire`和`dependency-check`属性来简化依赖注入的过程等。 总之,理解和掌握Spring的Bean配置机制对于任何Spring应用程序开发者来说都是非常...
Spring使用XML配置文件来描述这些Bean及其依赖关系。以下是对Spring Bean配置的详细解释: 1. `<beans>` 根元素:这是Spring配置文件的起点,它包含了所有的Bean定义。Spring容器会解析这个文件并创建相应的Bean...
spring框架中bean标签parent属性的各类使用范例 总计12个范例,涵盖了class、init-method、 factory-method、lazy-init、 depends-on、autowire 多种属性的组合使用
在XML配置中,我们可以使用`<bean>`标签的`parent`属性来指定父Bean。例如: ```xml <bean id="parentBean" class="com.example.ParentClass"> </bean> <bean id="childBean" parent="parentBean" class=...
在Spring 4版本中,我们可以通过XML配置文件或者Java配置类来声明bean的依赖关系。在提供的“SSH笔记-依赖、继承bean的配置”中,我们将重点讨论两种在XML配置中处理依赖和bean继承的方法:`parent`属性和`depends-...
- 当构造函数包含多个相同类型的参数时,使用类型属性来进行参数匹配更为直观和易于理解。例如,对于下面的XML片段: ```xml <bean id="billingService" class="com.lizjason.spring.BillingService"> </...
在Spring的XML配置文件中,当一个bean定义使用`parent`属性引用另一个bean定义时,它将继承父bean的所有属性,包括初始化方法、属性注入等。这种方式可以实现配置的复用,减少重复代码,提高可维护性。例如,我们...
- **解决方案**:为了避免这些问题,建议使用type属性来指定参数类型。例如,下面的XML配置: ```xml <bean id="billingService" class="com.lizjason.spring.BillingService"> </bean> ``` 可以改进为: ...
2. 为需要注入公共属性的bean的parent属性指定为步骤①中配置的bean的id。 五、Spring注解 Spring注解可以通过以下方式实现: 1. 开启注解注入:需要在xml配置文件中加上。 2. 开启组件扫描:需要在xml配置文件中...
自动绑定允许Spring通过bean类的自省来自动注入依赖,基于属性名称或类型进行匹配。尽管这可以简化配置,但可能导致配置的可读性和可维护性下降。在实际项目中,推荐明确地定义bean之间的依赖关系,以增强代码的...
Bean的依赖管理是通过`depends-on`属性来完成的,它可以确保指定的Bean在当前Bean实例化之前已经被创建。例如: ```xml <bean id="car" class="com.sunny.beans.autowire.Car" p:brand="奥迪" p:price="30000"/> ...
- 形式三:`<bean parent="someBean">`,通过`parent`属性引用父容器中的bean。 4. **内部bean(inner bean)**: 内部bean是在另一个bean的`<property>`或`<constructor-arg>`中定义的bean。它们没有ID或name...
在解析过程中,由于XML可以有嵌套的`<beans>`元素,`BeanDefinitionParserDelegate`使用一个parent-child结构来处理递归解析,确保默认属性的正确传播和保留。 在解析Bean定义时,Spring会检查每个`<bean>`元素的`...
它作为配置文件的根元素,提供了几个全局属性来控制所有包含的Bean的行为: 1. `default-init-method`: 如果设置了这个属性,那么配置文件中所有的Bean在初始化时都会调用指定的方法。这是一个方便的机制,用来确保...
- **技巧说明**:在构造函数参数配置中使用索引和类型信息,可以帮助更好地组织和理解配置文件。例如,使用`index`属性来指定构造函数参数的位置,或者使用`type`属性来指定参数的类型。 - **示例代码**: ```...
- **`<bean id="dataSource" ...>`**:这里定义了一个名为 `dataSource` 的 Bean,其类为 `DriverManagerDataSource`,这是一个简单的数据源实现,通过提供驱动名、用户名、密码和 URL 来配置数据库连接。...
- **在Spring环境中使用YAML暴露属性**:使用YAML配置Spring Bean属性。 - **Multi-profile YAML文档**:支持多环境配置。 - **YAML缺点**:讨论YAML相对于Properties文件的局限性。 - **类型安全的配置属性**:...
在XML配置中,可以使用`parent`属性来指定父Bean。 2. **依赖注入(Dependency Injection, DI)** 依赖注入是Spring框架的核心特性,它允许我们将对象之间的依赖关系外部化,而不是在对象内部硬编码。这样,我们...
这种方式允许开发者使用Java代码来配置Spring容器,相较于XML配置更加灵活、易于理解和调试。Spring 4.x进一步强化了这一特性,并成为了推荐的配置方式。 #### 三、Spring的Java配置方式 Spring的Java配置方式是...