spring 为某类注入的属性 其子类无法使用

在spring中注入属性的目标是实例而不是类

子类从父类继承的值是与实例无关的 所以子类的属性并没有被赋值

工作背景:

有一个BaseService 有3个Dao成员 DaoA DaoB DaoC

并且 spring 为这3个成员分别注入了值 这三个Dao是直接可以拿过来执行数据库访问的

但是有一个BaseService的子类 xxx

也是拿来执行数据库访问的

表面上 它可以正常的使用 DaoA DaoB

这让我产生了误解,以为这些是从父类拿过来的

但是 需求需要xxx去使用DaoC来访问数据库

结果一直报空指针异常 困惑了很久

最后才发现 xxx之所以能使用DaoA DaoB 是因为spring配置文件中也其DaoA DaoB 注了值

而与父类的DaoA DaoB DaoC是没有关系的

xxx的DaoC没有被注值 拿过来用的时候就一直是默认的null 所以一直报空指针异常

时间: 2024-10-18 10:36:10

spring 为某类注入的属性 其子类无法使用的相关文章

反射-Spring管理Bean,注入Bean属性的反射机制。

#反射 1.是JAVA API,是Java提供的现成的类!! --接受API提供的功能! 2. 是Java提供的动态执行机制,动态加载类,动态创建对象,动态访问属性,动态调用方法. ##反射用途 1. eclipse 中解析类的结构使用了反射 2.JUnit识别被测试方法使用了反射 -- JUnit3 利用了反射查找test开头的方法 -- JUnit4 利用了反射解析@Test查找测试方法 3.Spring 管理Bean对象,注入Bean属性使用了反射 --利用反射创建Bean对象实例 --利

Spring Annotation方式读取注入properties属性值

项目笔记1: applicationContext-integration.xml <?xml version="1.0" encoding="UTF-8"?> <beans default-autowire="no"     xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2

Spring boot 工具类静态属性注入及多环境配置

由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

Spring学习笔记--注入Bean属性

这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.springframework.context.ApplicationContext; import org.springframework.context.support.Clas

Spring根据XML配置文件注入对象类型属性

这里有dao.service和Servlet三个地方 通过配过文件xml生成对象,并注入对象类型的属性,降低耦合 dao文件代码: package com.swift; public class DaoUser { public void fun() { System.out.println("I'm dao's fun()...................."); } } service文件代码:(提供setter方法,xml文件可通过这种方法配置) package com.sw

Spring框架xml配置文件 复杂类型属性注入——数组 list map properties

Person类中的各种属性写法如下: package com.swift.person; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Properties; public class Person { //普通字符串 private String name; //字符串数组 private String[] arr; //字符串列表 private List<Stri

Spring(3.2.3) - Beans(2): 属性注入 &amp; 构造注入

依赖注入是指程序运行过程中们如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 IoC 容器使用 Bean 属性的 setter 方法来注入 Bean 依赖的实例.使用属性注入应该为 Bean 提供一个无参的构造函数和属性的 setter 方法. <bean id="magicWand" class="com.huey.dream.bean.Weapon

spring+hibernate实体类注解详解(非原创) + cascade属性取值

@Entity //继承策略.另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{} 1 @Entity(name="EntityName") 必须 name为可选,对应数据库中一的个表 2 @Table(name="