洞察探索open banking如何通过小程序容器技术助力金融企业实现数据安全和数字化转型
1207
2022-12-06
聊聊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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~