千家信息网

如何理解spring继承的问题

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,如何理解spring继承的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。spring继承的问题为什么输出是0呢?因为
千家信息网最后更新 2025年02月01日如何理解spring继承的问题

如何理解spring继承的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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;@Componentpublic class UserRepository extends BaseRepository{    }

UserService:

package com.jeremy.spring.genericityDI;import org.springframework.stereotype.Service;@Servicepublic class UserService extends BaseService{}

在Spring的配置文件中配置自动装配带有注解的Bean  

测试代码和结果

测试代码:

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0