加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring @Autowired字段 – 哪个访问修饰符,private或pac

发布时间:2020-12-14 06:06:21 所属栏目:Java 来源:网络整理
导读:假设我们在类中的各个字段上使用@Autowired注释,并且我们没有写入也可以设置字段的setter或构造函数. 问题 – 访问修饰符应该是私有的还是私有的(即没有)? 例如: public class MyClass { @Autowired private MyService myService;} VS public class MyClas
假设我们在类中的各个字段上使用@Autowired注释,并且我们没有写入也可以设置字段的setter或构造函数.

问题 – 访问修饰符应该是私有的还是私有的(即没有)?

例如:

public class MyClass {
    @Autowired
    private MyService myService;
}

VS

public class MyClass {
    @Autowired
    MyService myService;
}

在第一种情况(私有字段)中,Spring使用反射来连接字段,即使它没有setter.

第二种情况(包私有字段)允许我们能够访问这些字段(例如,设置嘲笑),如果我们需要扩展类进行测试.

所以这两种情况都能正常工作,但是更为推荐,特别是在测试方面呢?

解决方法

第一种情况也允许您根据框架注入模拟.例如使用Mockito的@InjectMocks注释. Spring Test中还有ReflectionTestUtils.setField,…

我个人不太喜欢修改课程太多用于测试目的,所以我会去第一种情况.但是在一天结束时,这主要取决于您的首选测试框架.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读