一个类一个类的注入
1.AClass类
2.BClass类
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
4.BClass类配置文件bclass2.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类
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); } }
相关推荐
当你有一个事件需要在整个应用中传播时,可以创建一个自定义的事件类,继承自ApplicationEvent。例如: ```java public class CustomEvent extends ApplicationEvent { private String eventData; public ...
为了防止这种情况,我们需要确保在Spring的XML配置文件中定义了一个`HibernateTemplate` bean,并将其注入到继承自`HibernateDaoSupport`的DAO类中。例如: ```xml <bean id="myHibernateTemplate" class="org....
1. **未正确配置Spring上下文**:确保在你的项目中包含Spring的上下文配置文件,如`applicationContext.xml`,并且在这个配置文件中声明了你需要注入的bean。例如,如果你有一个名为`MyService`的服务类,你应该声明...
1. **Spring的继承(Bean的继承)** 在Spring中,我们可以定义Bean的继承关系,使得子类Bean可以继承父类Bean的配置属性。这在处理具有相似属性或行为的Bean时非常有用。例如,你可以定义一个基础的DAO Bean配置,...
总之,当遇到无法继承`SpringBeanAutowiringSupport` 类的问题时,首要任务是检查并确保项目已经正确地引入了Spring框架的依赖。理解这个类的作用以及如何在项目中正确使用,是深入学习Spring框架的关键步骤。通过...
1. Spring 注入方式有 setter 注入、构造方法注入和接口注入。其中,setter 注入和构造方法注入是两种常用的注入方式。setter 注入的优点包括通过 setter 方法设定依赖关系更加直观自然、当依赖关系(或继承关系)较...
3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...
"更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...
1. **Bean的抽象化**:Spring支持定义抽象bean,可以作为具体bean的父类,通过继承来共享配置,减少了重复代码,降低了耦合。 2. **接口驱动设计**:鼓励使用接口而非具体实现,使得系统更易于扩展和替换组件。 3. *...
- **自动装载**: Spring可以根据依赖关系自动匹配并注入相应的Bean。 **知识点2:构造方法注入的特点** - **优点**: 可以确保依赖关系的完整性,特别适用于不可变对象或者必需的依赖关系。 - **缺点**: 当依赖关系...
标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...
UML(统一建模语言)类图是理解软件设计的重要工具,它可以帮助开发者直观地看到类之间的关系,如继承、实现、关联、依赖等。在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先...
1、不同版本的SpringFramework有哪些主要功能? Spring Framework是一个开源的Java平台,它提供了全面的编程和配置模型,适用于企业级应用程序的开发。随着版本的更新,Spring引入了新特性和改进,例如对注解的更好...
总结来说,Spring和SpringMVC的父子容器关系使得我们能够清晰地划分应用的各个组件,提供了一种灵活的bean管理和依赖注入机制。通过这种结构,我们可以在不污染主应用配置的情况下,实现Web层的独立配置,同时充分...
Struts1、Spring和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面:Struts1主要用于表现层管理,Spring则是一个全面的后端框架,包括依赖注入、事务管理、AOP(面向切面编程)等,而...
3. PlatformTransactionManager:这是Spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类...
通过这份UML模型,开发者可以直观地看到Spring框架的整体架构,理解类与类之间的关系,以及它们在运行时的动态交互。这对于设计模式的理解、问题定位和系统优化都有极大的帮助。因此,无论是初学者还是经验丰富的...
1. **依赖注入(DI)**: Spring的DI允许我们解耦组件,使得代码更加灵活和可测试。通过整合,我们可以使用Spring管理Struts的Action类,从而实现对Action的依赖注入。 2. **AOP集成**: Spring的AOP模块可以用于添加...