聊聊spring继承的问题

网友投稿 1207 2022-12-06

聊聊spring继承的问题

聊聊spring继承的问题

目录spring继承的问题为什么输出是0呢?spring注入有继承关系的类通过配置文件通过注解新建一个泛型类新建BaseRepository和BaseService的子类在Spring的配置文件中配置自动装配带有注解的Bean  测试代码和结果

spring继承的问题

为什么输出是0呢?

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

spring注入有继承关系的类

通过配置文件

通过注解

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

package com.jeremy.spring.genericityDI;

public class BaseRepository{

}

BaseService:

package com.jeremy.spring.genericityDI;

import org.springframework.beans.factory.annotation.Autowired;

public class BaseService {

@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

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/context http://springframework.org/schema/context/spring-context-4.0.xsd">

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/context http://springframework.org/schema/context/spring-context-4.0.xsd">

测试代码和结果

测试代码:

@Test

public void test() {

ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml");

UserService userService=(UserServicehttp://) actx.getBean("userService");

userService.add();

}

测试结果:

add..............

com.jeremy.spring.genericityDI.UserRepository@16546ef

从结果看,虽然子类没有建立依赖关系,但userRepository实例还是被实例化了,就证明了父类的依赖关系,子类是可以继承的

其实这里也可以说明,就算父类不是被IOC容器管理,但是建立关系时添加了@Autowired注解,父类的关系会被继承下来

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring 父类变量注入失败的解决
下一篇:MyBatis实现两种查询树形数据的方法详解(嵌套结果集和递归查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~