`
m635674608
  • 浏览: 5061293 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring注入有继承关系的类

 
阅读更多

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注解,父类的关系会被继承下来

http://www.cnblogs.com/jeremy-blog/p/4026795.html

分享到:
评论

相关推荐

    Spring的配置以及事件注入

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

    详解 Spring 3.0 基于 Annotation 的依赖注入实现

    为了识别并自动注册这些带有注解的类为 Bean,Spring 3.0 提供了一个名为 `&lt;context:component-scan&gt;` 的配置元素,该元素可以指定一个或多个包进行扫描。 **示例代码:** ```xml &lt;beans xmlns="http://www.spring...

    继承 空指针 spring

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

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

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

    spring jersey整合后无法注入

    Spring通过其IoC(Inversion of Control)容器来管理对象的生命周期和依赖关系,而Jersey则是一个基于JAX-RS(Java API for RESTful Web Services)规范的实现,用于创建RESTful服务。 当Spring与Jersey整合时,...

    spring试题(含答案)

    setter 注入的优点包括通过 setter 方法设定依赖关系更加直观自然、当依赖关系(或继承关系)较复杂时,构造注入方式的构造函数相当庞大,此时若使用设值注入方式则简单快捷。构造方法注入的优点包括把创建完整、...

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

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

    Quartz注入Spring的Bean

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

    SpringJdbcTemplate封装工具类

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

    使用Spring降低类之间的耦合

    依赖注入是Spring的核心特性之一,它允许我们解耦对象的创建和对象之间的依赖关系。传统的编程模式中,一个类通常会直接创建或查找其依赖的对象,这种做法使得类之间产生了紧密的耦合。而在Spring中,我们可以通过...

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

    - **继承关系**: ApplicationContext是BeanFactory的子接口,继承了BeanFactory的所有功能,并提供了更多的扩展性。 - **应用场景**: ApplicationContext通常用于更高级的应用场景,如资源文件访问和支持。 **知识...

    spring源码全部uml类图

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

    Spring简单模拟Spring容器

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

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

    - 依赖注入(DI)支持:Spring通过控制反转(IoC)支持将对象之间的依赖关系通过配置文件或注解来管理。 - 面向切面编程(AOP):Spring支持面向切面编程,可以将通用任务(如日志记录和事务管理)模块化。 - 事务...

    Spring和SpringMVC父子容器关系

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

    继承Mapper实现的方法,无需编写太多mapper.xml文件,即可获得CRUD功能

    1. **继承Mapper接口**:MyBatis的`org.mybatis.spring.mapper.MapperScannerConfigurer`类允许我们在Spring配置中扫描特定基类的Mapper接口。如果我们创建一个基类Mapper接口,比如`BaseMapper`,并在此接口中定义...

    分析 Spring 可用的 UML

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

    spring、Struts2、hibernate常见面试题

    本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现...

    Spring中依赖注入与容器

    而Spring作为一个POJO(Plain Old Java Object)容器,是低侵入式的,允许任何Java类成为容器管理的对象,无需特定的继承关系或接口实现。Spring通过注解如`@Component`来标记组件,进一步通过`@Scope`注解定义组件...

Global site tag (gtag.js) - Google Analytics