1.通过配置文件
0 <bean id="sysActionService" class="com.service.impy.SysActionServiceImpy" parent="baseService" > <property name="sysActionDao" ref="sysActionDao" /> </bean>
2.通过注解(只需要在子类上加注解,父类上不用加会自动注入)
package com.jeremy.spring.genericityDI; public class BaseRepository{ }
BaseService:
package com.jeremy.spring.genericityDI; import org.springframework.beans.factory.annotation.Autowired; public class BaseService<T> { @Autowired------//这里告诉IOC容器自动装配有依赖关系的Bean protected BaseRepository baseRepository;--------//这里是子类继承依赖关系 public void add(){ System.out.println("add.............."); System.out.println(baseRepository); } }
2新建一个泛型类:
User:
package com.jeremy.spring.genericityDI; public class User { }
3新建BaseRepository和BaseService的子类
UserRepository:
package com.jeremy.spring.genericityDI; import org.springframework.stereotype.Component; @Component public class UserRepository extends BaseRepository{ }
UserService:
package com.jeremy.spring.genericityDI; import org.springframework.stereotype.Service; @Service public class UserService extends BaseService{ }
4:在Spring的配置文件中配置自动装配带有注解的Bean:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.jeremy.spring.genericityDI"></context:component-scan> </beans>
5测试代码和结果
测试代码:
@Test public void test() { ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml"); UserService userService=(UserService) actx.getBean("userService"); userService.add(); }
测试结果:
add..............
com.jeremy.spring.genericityDI.UserRepository@16546ef
从结果看,虽然子类没有建立依赖关系,但userRepository实例还是被实例化了,就证明了父类的依赖关系,子类是可以继承的
其实这里也可以说明,就算父类不是被IOC容器管理,但是建立关系时添加了@Autowired注解,父类的关系会被继承下来
相关推荐
当你有一个事件需要在整个应用中传播时,可以创建一个自定义的事件类,继承自ApplicationEvent。例如: ```java public class CustomEvent extends ApplicationEvent { private String eventData; public ...
为了识别并自动注册这些带有注解的类为 Bean,Spring 3.0 提供了一个名为 `<context:component-scan>` 的配置元素,该元素可以指定一个或多个包进行扫描。 **示例代码:** ```xml <beans xmlns="http://www.spring...
为了防止这种情况,我们需要确保在Spring的XML配置文件中定义了一个`HibernateTemplate` bean,并将其注入到继承自`HibernateDaoSupport`的DAO类中。例如: ```xml <bean id="myHibernateTemplate" class="org....
在Spring中,我们可以定义Bean的继承关系,使得子类Bean可以继承父类Bean的配置属性。这在处理具有相似属性或行为的Bean时非常有用。例如,你可以定义一个基础的DAO Bean配置,然后让具体的DAO Bean继承它,从而...
Spring通过其IoC(Inversion of Control)容器来管理对象的生命周期和依赖关系,而Jersey则是一个基于JAX-RS(Java API for RESTful Web Services)规范的实现,用于创建RESTful服务。 当Spring与Jersey整合时,...
setter 注入的优点包括通过 setter 方法设定依赖关系更加直观自然、当依赖关系(或继承关系)较复杂时,构造注入方式的构造函数相当庞大,此时若使用设值注入方式则简单快捷。构造方法注入的优点包括把创建完整、...
总之,当遇到无法继承`SpringBeanAutowiringSupport` 类的问题时,首要任务是检查并确保项目已经正确地引入了Spring框架的依赖。理解这个类的作用以及如何在项目中正确使用,是深入学习Spring框架的关键步骤。通过...
3. **Spring注入Bean到Job**:在Job执行时,我们可以直接注入其他由Spring管理的Bean,无需在Job中创建这些对象,从而减少了代码的复杂性,增强了可重用性。 4. **JobFactory的自定义**:Quartz默认使用...
"更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...
依赖注入是Spring的核心特性之一,它允许我们解耦对象的创建和对象之间的依赖关系。传统的编程模式中,一个类通常会直接创建或查找其依赖的对象,这种做法使得类之间产生了紧密的耦合。而在Spring中,我们可以通过...
- **继承关系**: ApplicationContext是BeanFactory的子接口,继承了BeanFactory的所有功能,并提供了更多的扩展性。 - **应用场景**: ApplicationContext通常用于更高级的应用场景,如资源文件访问和支持。 **知识...
UML(统一建模语言)类图是理解软件设计的重要工具,它可以帮助开发者直观地看到类之间的关系,如继承、实现、关联、依赖等。在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先...
标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...
- 依赖注入(DI)支持:Spring通过控制反转(IoC)支持将对象之间的依赖关系通过配置文件或注解来管理。 - 面向切面编程(AOP):Spring支持面向切面编程,可以将通用任务(如日志记录和事务管理)模块化。 - 事务...
总结来说,Spring和SpringMVC的父子容器关系使得我们能够清晰地划分应用的各个组件,提供了一种灵活的bean管理和依赖注入机制。通过这种结构,我们可以在不污染主应用配置的情况下,实现Web层的独立配置,同时充分...
1. **继承Mapper接口**:MyBatis的`org.mybatis.spring.mapper.MapperScannerConfigurer`类允许我们在Spring配置中扫描特定基类的Mapper接口。如果我们创建一个基类Mapper接口,比如`BaseMapper`,并在此接口中定义...
通过这份UML模型,开发者可以直观地看到Spring框架的整体架构,理解类与类之间的关系,以及它们在运行时的动态交互。这对于设计模式的理解、问题定位和系统优化都有极大的帮助。因此,无论是初学者还是经验丰富的...
本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现...
而Spring作为一个POJO(Plain Old Java Object)容器,是低侵入式的,允许任何Java类成为容器管理的对象,无需特定的继承关系或接口实现。Spring通过注解如`@Component`来标记组件,进一步通过`@Scope`注解定义组件...