Spring实现中,对set方法,需要public用来注入,某天聊起来同事说不安全,因为我们学java的时候不就是认为不要public不必要的东西吗,比如dao啥的,不要用户能修改啊。但是这么一来,写unit mock测试的时候就比较麻烦,现在是采取继承测试类,加入需要public的set方法,然后在其中用反射实现private的方法。
    是否Spring认为公布的都是接口,同时Spring 认为应该由容器负责安全? 但是set方法写出来,其他类能用,有隐患吗。
    恳请达人分析一下。

解决方案 »

  1.   

    帮你顶一下。。用过spring。。但谈到 理论,我就不太懂了
    等待高手。
      

  2.   

      spring 中是有set方法,但是没有get(),所以说,其它的类根本就不可能去获取set的东西
      

  3.   

    谢谢楼上顶贴,set公布出来也有安全隐患吧。
      

  4.   

    从依赖注入,封装考虑; 从测试,重构考虑,写set方法是有好处的。现在的问题是安全问题。
      

  5.   

    在Spring2.5+以后,支持注解的方式实现bean的配置,可以直接对private属性进行注入,完全不需要set方法.
    //像这样
    @Autowire
    private UserDao userDao;@Resource(name="loginService")
    private LoginService loginService;//不需要set方法
      

  6.   

    你认为 Spring 会采用多个线程进行注入么?
      

  7.   

    多谢katasoft,关于spring注入的问题表面上已经问完,但是之前的版本以后研究。囧。
    Mock 单元测试没有set办法我想它也有自己的解决办法,先下去想想,想不通再来问
      

  8.   


    没明白你什么意思 但是我一直都是这样认为的1.通过Spring获得bean的时候那些方法在创建的时候已经被调用了 不是在你使用的时候还不断更改的(好象也没有这个功能)
    2.单例的bean就是像我第一个说的那样 一开始就初始化好了 不是单例的bean在创建的时候就执行初始化(好象还是没有说在什么中途更改属性的事情)