相关疑难解决方法(0)

为什么要使用getter和setter/accessors?

使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?

如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:

public String foo;
Run Code Online (Sandbox Code Playgroud)

更糟糕的是:

private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)

而前者需要很少的样板代码.

java oop getter setter abstraction

1472
推荐指数
26
解决办法
37万
查看次数

Mockito:将真实对象注入私有的@Autowired字段

我正在使用Mockito @Mock和@InjectMocks注释将依赖项注入到使用Spring注释的私有字段中@Autowired:

@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
    @Mock
    private SomeService service;

    @InjectMocks
    private Demo demo;

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

和

public class Demo {

    @Autowired
    private SomeService service;

    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

现在我想将真实对象注入私有@Autowired字段(没有setter).这是可能的还是机制仅限于注射Mocks?

java spring mockito

170
推荐指数
4
解决办法
9万
查看次数

为什么在CDI中使用构造函数而不是setter注入?

我在这里找不到任何合理的答案所以我希望它不是重复的.那么为什么我更喜欢setter或构造函数注入而不是简单

@Inject
MyBean bean;
Run Code Online (Sandbox Code Playgroud)

如果你需要在类初始化期间对注入的bean执行某些操作,我会使用构造函数注入

public void MyBean(@Inject OtherBean bean) {
    doSomeInit(bean);
    //I don't need to use @PostConstruct now
}
Run Code Online (Sandbox Code Playgroud)

但是,它几乎和@PostConstruct方法一样,我根本没有得到setter注入,它不仅仅是Spring和其他DI框架之后的遗物吗?

java dependency-injection cdi

16
推荐指数
1
解决办法
1万
查看次数

应用服务器如何注入私有字段?

我看到了这个问题

注入私人,包装或公共领域或提供制定者?

关于如何手动注入带注释的私有字段(方式是添加setter或通过构造函数)

但是,重点是应用程序服务器(如glassfish,axis2,jboss,...)如何能够注入最终的私有字段(不向用户类添加setter或构造函数)?

引用引用的问题:

public SomeClass {
  @Inject
  private SomeResource resource;
}
Run Code Online (Sandbox Code Playgroud)

他们是否使用允许访问私有字段的自定义JVM(不是标准的JVM)?

谢谢

java annotations dependency-injection

11
推荐指数
2
解决办法
2939
查看次数