spring使用注解通过子类注入父类的私有变量

方法一

通过 super.setBaseDao方法设置父类私有变量

父类

public class BaseServiceImpl {
    private BaseDao baseDao;

public BaseDao getBaseDao() {
        return baseDao;
    }

public void setBaseDao(BaseDao baseDao) {
        this.baseDao = baseDao;
    }

public void test(){
        System.out.println("TsetService...... ");
        baseDao.test();
    }
}

子类

@Service("testServiceImpl")
public class TestServiceImpl extends BaseServiceImpl{

    @Resource(name="testDao")
    public void initBaseDao(TestDao testDao) {
        super.setBaseDao(testDao);
    }
        
}

方法二

@PostConstruct是Java EE 5引入的注解,Spring允许开发者在受管Bean中使用它。当DI容器实例化当前受管Bean时,@PostConstruct注解的方法会被自动触发,从而完成一些初始化工作

父类同上

子类

@Service("testServiceImpl")
public class TestServiceImpl extends BaseServiceImpl{
    
    private TestDao testDao;
    
    
    public TestDao getTestDao() {
        return testDao;
    }

@Resource(name="testDao")
    public void setTestDao(TestDao testDao) {
        this.testDao = testDao;
    }

@PostConstruct
    public void initBaseDao(TestDao testDao) {
        super.setBaseDao(testDao);
    }
        
}

方法三

父类被注入对象非私有,子类重写setter方法注入到父类变量

父类

public class BaseServiceImpl {
    protected BaseDao baseDao;

public BaseDao getBaseDao() {
        return baseDao;
    }

public void setBaseDao(BaseDao baseDao) {
        this.baseDao = baseDao;
    }

public void test(){
        System.out.println("TsetService...... ");
        baseDao.test();
    }
}

子类

@Service("testServiceImpl")
public class TestServiceImpl extends BaseServiceImpl{

@Resource(name="testDao")
    public void setBaseDao(BaseDao baseDao) {
        this.baseDao = baseDao;
    }
 
}

spring使用注解通过子类注入父类的私有变量

时间: 2024-10-14 03:05:22

spring使用注解通过子类注入父类的私有变量的相关文章

Java子类访问父类的私有成员变量

/**子类会继承父类所有的属性和方法. * 但是根据不同的权限标识符,子类不可见父类的私有变量,但可以通过父类的公共方法访问私有变量 * 所以对于重名变量,子类和父类都各有一份. * 对于子类和父类中重名的方法,则为重写.即子类重写了父类的方法,用于多态. * 同一个类中函数的签名不同,则为方法的重载.函数的签名为函数名+参数列表,与返回值无关. */

Shiro自定义Realm时用注解的方式注入父类的credentialsMatcher

用Shiro做登录权限控制时,密码加密是自定义的. 数据库的密码通过散列获取,如下,算法为:md5,盐为一个随机数字,散列迭代次数为3次,最终将salt与散列后的密码保存到数据库内,第二次登录时将登录的令牌再进行同样的运算后再与数据库的做对比. String algorithmName = "md5";String userName = "rose";String password = "rose123";int hashIterations =

Spring使用注解配置依赖注入

大部分情况下,使用Spring配置依赖注入时,都是使用注解来进行配置,因为注解比xml要方便和简单.不过类似于数据源对象这种配置信息容易变更的对象除外,这种对象使用xml文件来进行配置会更适合,方便于在外部进行修改,而不需要打开代码来进行修改. 接下来简单介绍一下注解的配置方式,首先要让Spring支持注解,编辑Spring配置文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&

Spring MVC 注解方式 静态类 注入bean

//核心代码 @Controller public class Ly4sIFutil {     private static Ly4sService myLy4sService;          Ly4sService getLy4sService() { return myLy4sService;     }          //核心代码     @Resource(name = "Ly4sService")       public void setLy4sService(L

子类继承父类时,子类与父类有同名变量,当使用子类对象调用父类方法使用同名变量,这个变量是子类的,还是父类的? (改)

1 public class Test4 { 2 public static void main(String[] args){ 3 Son son = new Son(); 4 son.minusOne(); 5 System.out.println(son.testValue); 6 System.out.println(son.getSuperTestValue()); 7 son.plusOne(); 8 System.out.println(son.testValue); 9 Syst

子类继承父类的私有属性

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法

spring基于注解的属性注入

1.@Autowired 通过类型进行匹配(主流的方式),当容器中出现两个同类型的bean时会报NoUniqueBeanDefinitionException的异常.这时有两种方法, 第一种 如果有两个bean放弃注入,@Autowired 有一个required属性.fase 表示抛出异常放弃注入.默认为true 第二种 通过@Qualifier指定注入bean的名称 如下: @Autowired @Qualifier("userDaoImpl") private UserDao d

spring使用注解的方式注入和装配

获取父类的私有变量

开始时调用了方法 object_getInstanceVariable(id obj, const char *name, void**outValue),使用该方法确实可以获取到另一个类私有变量的值,但是只能在非ARC环境中使用(配置方法:点击 工程名->Build Settings->搜索Automatic Reference Counting),我的工程是ARC的,肯定不行,于是我继续找方法. 于是我找到了这个方法 class_getInstanceVariable(Class cls,