聊聊spring继承的问题
目录
- spring继承的问题
- 为什么输出是0呢?
- spring注入有继承关系的类
- 通过配置文件
- 通过注解
- 新建一个泛型类
- 新建BaseRepository和BaseService的子类
- 在Spring的配置文件中配置自动装配带有注解的Bean
- 测试代码和结果
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容器自动装配有依赖关系的Beanprotected 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
测试代码和结果
测试代码:
@Testpublic void test() {ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml"); UserService userService=(UserService) actx.getBean("userService"); userService.add(); }
测试结果:
add..............从结果看,虽然子类没有建立依赖关系,但userRepository实例还是被实例化了,就证明了父类的依赖关系,子类是可以继承的
com.jeremy.spring.genericityDI.UserRepository@16546ef
其实这里也可以说明,就算父类不是被IOC容器管理,但是建立关系时添加了@Autowired注解,父类的关系会被继承下来
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- 想聊聊SA,聊聊手帐,也想和你们分享自己
- spring|spring boot项目启动websocket
- Spring|Spring Boot 整合 Activiti6.0.0
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了