我是靠谱客的博主 寂寞墨镜,最近开发中收集的这篇文章主要介绍聊聊spring继承的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

spring继承的问题

为什么输出是0呢?

因为是子类继承父类,实例对象调用的主要是左边的父类属性和方法,所以输出结果是以左边对象为主

spring注入有继承关系的类

通过配置文件

<bean id="sysActionService" class="com.service.impy.SysActionServiceImpy" parent="baseService" >    
      <property name="sysActionDao" ref="sysActionDao" />    
  </bean>   

通过注解

只需要在子类上加注解,父类上不用加会自动注入

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);
    }
}

新建一个泛型类

User:

package com.jeremy.spring.genericityDI;
public class User {
}

新建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{
}

在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>

测试代码和结果

测试代码:

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持靠谱客。

最后

以上就是寂寞墨镜为你收集整理的聊聊spring继承的问题的全部内容,希望文章能够帮你解决聊聊spring继承的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部