`

Spring注入有继承关系的类(1)

阅读更多
一个类一个类的注入
1.AClass类
package com.bijian.spring.test2;

public class AClass {

    String a;
    String b;
   
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}
 
2.BClass类
package com.bijian.spring.test2;

public class BClass extends AClass {

    String c;

    public String getC() {
        return c;
    }

    public void setC(String c) {
        this.c = c;
    }

    String fn() {
        return a + b + c;
    }
}
 
3.AClass类配置文件aclass2.xml
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="bean1" class="com.bijian.spring.test2.AClass">
      <property name="a">
          <value>1</value>
      </property>
      <property name="b">
          <value>2</value>
      </property>
  </bean>
</beans>
 
4.BClass类配置文件bclass2.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  
   
<beans>  
  <bean id="bean2" class="com.bijian.spring.test2.BClass">
      <property name="c">
          <value>3</value>
     </property>
  </bean>
</beans>
 
5.应用测试类Test.java
package com.bijian.spring.test2;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) {
       
        ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"aclass2.xml","bclass2.xml"});
       
        //得到子类,结果是:nullnull3
        BClass bclass = (BClass)ac.getBean("bean2");
        String res = bclass.fn();
        System.out.println(res);
    }
}
      
        由结果不难看出,子类没有拥有 注入给父类的属性值。
        如果我们想要子类拥有注入给父类的属性值,该怎么办呢?可以通过修改配置文件和应用测试类来达到,如下所示:
1.AClass类
package com.bijian.spring.test3;

public class AClass {

    String a;
    String b;
   
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
}
 
2.BClass类
package com.bijian.spring.test3;

public class BClass extends AClass {

    String c;

    public String getC() {
        return c;
    }

    public void setC(String c) {
        this.c = c;
    }

    String fn() {
        return a + b + c;
    }
}
 
3.配置一个父类的配置文件parent3.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  

<beans>  
  <bean id="abstractbean" abstract="true">
      <property name="a">
          <value>1</value>
      </property>
      <property name="b">
          <value>2</value>
      </property>
  </bean>
</beans>
 
4.AClass类配置文件aclass3.xml
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="bean1" class="com.bijian.spring.test3.AClass" parent="abstractbean"/>  
</beans>
 
5.BClass类配置文件bclass3.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
  "http://www.springframework.org/dtd/spring-beans.dtd">  

<beans>
  <bean id="bean2" class="com.bijian.spring.test3.BClass" parent="abstractbean">
      <property name="c">
          <value>3</value>
     </property>
  </bean>
</beans>
 
6.应用测试类Test.java
package com.bijian.spring.test3;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) {
       
        ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"parent3.xml","aclass3.xml","bclass3.xml"});
       
        //得到子类,结果是:123
        BClass bclass = (BClass)ac.getBean("bean2");
        String res = bclass.fn();
        System.out.println(res);
    }
}
 
分享到:
评论

相关推荐

    Spring的配置以及事件注入

    当你有一个事件需要在整个应用中传播时,可以创建一个自定义的事件类,继承自ApplicationEvent。例如: ```java public class CustomEvent extends ApplicationEvent { private String eventData; public ...

    继承 空指针 spring

    为了防止这种情况,我们需要确保在Spring的XML配置文件中定义了一个`HibernateTemplate` bean,并将其注入到继承自`HibernateDaoSupport`的DAO类中。例如: ```xml &lt;bean id="myHibernateTemplate" class="org....

    spring jersey整合后无法注入

    1. **未正确配置Spring上下文**:确保在你的项目中包含Spring的上下文配置文件,如`applicationContext.xml`,并且在这个配置文件中声明了你需要注入的bean。例如,如果你有一个名为`MyService`的服务类,你应该声明...

    第七章 Spring4 继承、依赖、引用

    1. **Spring的继承(Bean的继承)** 在Spring中,我们可以定义Bean的继承关系,使得子类Bean可以继承父类Bean的配置属性。这在处理具有相似属性或行为的Bean时非常有用。例如,你可以定义一个基础的DAO Bean配置,...

    学习Spring教程时,无法继承SpringBeanAutowiringSupport类

    总之,当遇到无法继承`SpringBeanAutowiringSupport` 类的问题时,首要任务是检查并确保项目已经正确地引入了Spring框架的依赖。理解这个类的作用以及如何在项目中正确使用,是深入学习Spring框架的关键步骤。通过...

    spring试题(含答案)

    1. Spring 注入方式有 setter 注入、构造方法注入和接口注入。其中,setter 注入和构造方法注入是两种常用的注入方式。setter 注入的优点包括通过 setter 方法设定依赖关系更加直观自然、当依赖关系(或继承关系)较...

    Quartz注入Spring的Bean

    3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...

    SpringJdbcTemplate封装工具类

    "更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...

    使用Spring降低类之间的耦合

    1. **Bean的抽象化**:Spring支持定义抽象bean,可以作为具体bean的父类,通过继承来共享配置,减少了重复代码,降低了耦合。 2. **接口驱动设计**:鼓励使用接口而非具体实现,使得系统更易于扩展和替换组件。 3. *...

    spring笔试题28题选择+2简答

    - **自动装载**: Spring可以根据依赖关系自动匹配并注入相应的Bean。 **知识点2:构造方法注入的特点** - **优点**: 可以确保依赖关系的完整性,特别适用于不可变对象或者必需的依赖关系。 - **缺点**: 当依赖关系...

    Spring简单模拟Spring容器

    标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...

    spring源码全部uml类图

    UML(统一建模语言)类图是理解软件设计的重要工具,它可以帮助开发者直观地看到类之间的关系,如继承、实现、关联、依赖等。在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先...

    Spring系列面试题129道(附答案解析)

    1、不同版本的SpringFramework有哪些主要功能? Spring Framework是一个开源的Java平台,它提供了全面的编程和配置模型,适用于企业级应用程序的开发。随着版本的更新,Spring引入了新特性和改进,例如对注解的更好...

    Spring和SpringMVC父子容器关系

    总结来说,Spring和SpringMVC的父子容器关系使得我们能够清晰地划分应用的各个组件,提供了一种灵活的bean管理和依赖注入机制。通过这种结构,我们可以在不污染主应用配置的情况下,实现Web层的独立配置,同时充分...

    struts1+spring+hibernate整合的jar包

    Struts1、Spring和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面:Struts1主要用于表现层管理,Spring则是一个全面的后端框架,包括依赖注入、事务管理、AOP(面向切面编程)等,而...

    Spring面试题大全

    3. PlatformTransactionManager:这是Spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类...

    分析 Spring 可用的 UML

    通过这份UML模型,开发者可以直观地看到Spring框架的整体架构,理解类与类之间的关系,以及它们在运行时的动态交互。这对于设计模式的理解、问题定位和系统优化都有极大的帮助。因此,无论是初学者还是经验丰富的...

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

    1. **依赖注入(DI)**: Spring的DI允许我们解耦组件,使得代码更加灵活和可测试。通过整合,我们可以使用Spring管理Struts的Action类,从而实现对Action的依赖注入。 2. **AOP集成**: Spring的AOP模块可以用于添加...

Global site tag (gtag.js) - Google Analytics