parent-init.xml
<?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 default-autowire="byName">
<bean id="initBean" class="org.frame.auth.init.InitBean" >
<property name="name">
<value>parent</value>
</property>
</bean>
</beans>
spring-init.xml
<?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 default-autowire="byName">
<bean id="initBean" class="org.frame.auth.init.InitBean" >
<property name="name">
<value>sub</value>
</property>
</bean>
</beans>
TestParent.xml
package org.frame.auth.init;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class TestParent {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//文档果然犀利啊.
Resource resource = new ClassPathResource("parent-init.xml");
BeanFactory xmf = new XmlBeanFactory(resource);
Resource subResource = new ClassPathResource("spring-init.xml");
BeanFactory subXmf = new XmlBeanFactory(subResource,xmf);
InitBean initBean = (InitBean) subXmf.getBean("initBean");
System.out.println(initBean.getName());//得到的是父.
ApplicationContext ctx = new ClassPathXmlApplicationContext("parent-init.xml");
ApplicationContext subctx = new ClassPathXmlApplicationContext(new String[]{"spring-init.xml"},ctx);
InitBean initBeanb = (InitBean) subctx.getBean("initBean");
System.out.println(initBeanb.getName());//得到的是子.
}
}
这里展示了Spring 的BeanFactory的加载,有趣的是XmlBeanFactory加载是父容器类覆盖子容器类,而ApplicationContext加载是是子容器类覆盖父容器类,这个大家要注意的。
下面展示Spring Bean的parent属性。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" " http://www.springframework.org/dtd/spring-beans.dtd ">
<beans default-autowire="byName">
<bean id="parent" class="org.frame.base.parent.Message" abstract="true" >
<property name="name">
<value>ycl</value>
</property>
<property name="message">
<value>yes</value>
</property>
</bean>
<bean id="person" class="org.frame.base.parent.Person" parent="parent">
<property name="name">
<value>天才</value>
</property>
</bean>
</beans>
Person
package org.frame.base.parent;
public class Person {
private String name;
private String message;
public void setName(String name) {
this.name = name;
}
public void setMessage(String message) {
this.message = message;
}
public String toString(){
return name+":"+message;
}
}
Message
package org.frame.base.parent;
public abstract class Message {
private String name;
private String message;
public void setName(String name) {
this.name = name;
}
public void setMessage(String message) {
this.message = message;
}
public String toString(){
return name+":"+message;
}
}
测试
package org.frame.base.parent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestParent {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx = new ClassPathXmlApplicationContext("parent.xml");
Person pp =(Person)ctx.getBean("person");
System.out.println(pp);
}
}
这里的Message和Person完全没有关系,但是我在Spring Bean中指定了其父Bean,可见Spring的这个parent是属性的继承。大家可以定义属性,然后采用重定义覆写.
分享到:
相关推荐
spring集成quartz2.2.1步骤,包括具体代码,欢迎下载
Struts1、Spring和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面:Struts1主要用于表现层管理,Spring则是一个全面的后端框架,包括依赖注入、事务管理、AOP(面向切面编程)等,而...
在本文中,我们将深入探讨如何在SpringBoot项目中集成Spring Security来实现角色继承,并提供一个完整的源码示例。这将特别适用于初学者和开发者,帮助他们更好地理解Spring Security的安全特性。 首先,让我们理解...
在Spring框架中,继承、依赖和引用是核心的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)概念的重要组成部分。这些概念对于理解和使用Spring框架进行应用开发至关重要。以下是对...
当我们谈论"继承 空指针 spring"时,这通常涉及到Spring框架中的类继承和空指针异常(NullPointerException)问题。 首先,让我们讨论一下继承在Spring框架中的作用。在Spring中,我们经常通过继承来实现对服务层...
在Spring框架中,Bean的继承配置是一个非常关键的概念,它允许我们通过定义一个基础Bean配置,然后由其他Bean继承这个配置,实现配置的复用和扩展。这种方式在大型项目中非常常见,因为它使得代码更加模块化,易于...
常用四大连接池集合c3p0,dbcp,druid,HikariCP,内有四大连接池的使用方法,配置方法,以及它们之间的比较和介绍,和spring继承等配置方法。 c3p0 太古老,代码及其复杂,不利于维护。貌似都比它强。 dbcp 是 ...
与其他容器相比,Spring 的一大特点是其Bean可以是普通的Plain Old Java Objects(POJOs),不需要实现特定接口或继承特定基类,这意味着Spring管理的对象在容器外部也可以正常使用,增强了代码的可复用性和灵活性。...
Spring Boot 是一个基于 Spring 框架的高度集成了简化开发的工具,它旨在简化创建产品级的 Spring 应用程序。MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。当我们将 Spring Boot 与 ...
本教程将深入探讨如何在基于Spring Cloud的微服务架构中集成Flowable工作流引擎,提升系统的流程管理能力。 首先,Spring Cloud是构建分布式系统的一系列工具集,包括服务发现、配置管理、熔断机制等,它为微服务...
应用程序上下文层次结构允许子上下文从父上下文中继承属性,增强了配置管理的灵活性。 总之,Spring Cloud 是构建云原生应用的强大工具,它提供了丰富的功能,如配置管理、服务发现、断路器、路由等,帮助开发者...
17.Spring Cloud中Feign的继承特性 18.Spring Cloud中Feign配置详解 19.Spring Cloud中的API网关服务Zuul 20.Spring Cloud Zuul中路由配置细节 21.Spring Cloud Zuul中异常处理细节 22.分布式配置中心Spring ...
- 通过继承`spring-boot-starter-parent`父项目,可以获得统一的版本管理和依赖管理。 - 导入`spring-boot-dependencies`作为依赖管理,简化项目构建配置。 7. **Spring Boot运行方式** - 打包成JAR/WAR运行,可...
如果不想继承 Starter 父 POM,可以使用以下方式来使用 Spring Boot: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-web ``` 自定义层配置 Spring Boot Maven Plugin 提供...
我们可以通过继承`JpaRepository`或`CrudRepository`来创建自定义的Repository,无需编写任何DAO层的代码。例如,假设我们有一个`User`实体,我们可以定义一个`UserRepository`: ```java public interface ...
**描述解析:** 描述提到“maven构建的spring继承CXF的简单示例”,这告诉我们这个项目是用Maven来管理依赖,使用Spring框架,并且集成了CXF服务框架。对于新手来说,这是一个很好的起点,因为它覆盖了三个关键的...
在本文中,我们将深入探讨如何在SpringBoot项目中集成Spring Security来实现角色继承,并提供一个完整的源码示例。这将特别适用于初学者和开发者,帮助他们更好地理解Spring Security的安全特性。 让我们理解Spring...
Spring Security 角色继承分析 Spring Security 角色继承分析是 Spring Security 框架中的一项重要功能,它允许开发者定义角色之间的继承关系,从而实现权限的继承和复用。今天,我们将深入探讨 Spring Security ...
setter 注入的优点包括通过 setter 方法设定依赖关系更加直观自然、当依赖关系(或继承关系)较复杂时,构造注入方式的构造函数相当庞大,此时若使用设值注入方式则简单快捷。构造方法注入的优点包括把创建完整、...
当你在项目中尝试继承`SpringBeanAutowiringSupport` 时遇到编译错误,这通常意味着你的构建路径中没有包含Spring的核心库。Spring框架是基于多个jar包的,包括但不限于`spring-context.jar`,这个jar包包含了`...