gpt4 book ai didi

java - 将 Spring 字段注入(inject)转换为构造函数注入(inject)(IntelliJ IDEA)?

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:58 25 4
gpt4 key购买 nike

我确信将我的 Spring Java 字段注入(inject) [@Autowired] 转换为构造函数注入(inject)( among other reasons ,以促进模拟单元测试)...

有没有我可以用来自动将 Spring 字段转换为构造函数注入(inject)的实用程序?

例如,IntelliJ IDEA 有很多东西的生成快捷方式(即:为字段生成 setter 和 getter);我希望有类似的东西......当手动进行转换很乏味时,这特别有用,因为要转换的类已经有许多字段注入(inject)字段。

最佳答案

是的,它现在已在 IntelliJ IDEA 中实现。

1) 将光标放在 @Autowired 注释之一上。

2) 按 Alt+Enter

3) 选择创建构造函数

enter image description here

这是 quick fixinspection 有关“字段注入(inject)警告”:

Spring Team recommends: "Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies".

Field injection/NullPointerException example:

class MyComponent {

@Inject MyCollaborator collaborator;

public void myBusinessMethod() {
collaborator.doSomething(); // -> NullPointerException
}
}

Constructor injection should be used:

class MyComponent {

private final MyCollaborator collaborator;

@Inject
public MyComponent(MyCollaborator collaborator) {
Assert.notNull(collaborator, "MyCollaborator must not be null!");
this.collaborator = collaborator;
}

public void myBusinessMethod() {
collaborator.doSomething(); // -> safe
}
}

关于java - 将 Spring 字段注入(inject)转换为构造函数注入(inject)(IntelliJ IDEA)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com