在使用@Autowired时报错 Field injection is not recommended
时间: 2024-01-17 09:17:54 浏览: 93
使用@Autowired注解警告Field injection is not recommended的解决
在使用@Autowired时报错 "Field injection is not recommended" 是因为字段注入(Field injection)不再被推荐使用。字段注入是指直接在类的字段上使用@Autowired注解来进行依赖注入。这种方式存在一些问题,比如难以进行单元测试、难以进行循环依赖的解决等。因此,推荐使用构造函数注入或者Setter方法注入来替代字段注入。
下面是使用构造函数注入的示例代码:
```java
@Service
public class MyService {
private final MyDependency myDependency;
@Autowired
public MyService(MyDependency myDependency) {
this.myDependency = myDependency;
}
// ...
}
```
在上面的示例中,通过在构造函数上使用@Autowired注解,将MyDependency作为构造函数的参数进行注入。这样可以保证MyService类在实例化时,必须提供一个MyDependency的实例,从而解决了依赖注入的问题。
另外,你也可以使用Setter方法注入来替代字段注入。示例代码如下:
```java
@Service
public class MyService {
private MyDependency myDependency;
@Autowired
public void setMyDependency(MyDependency myDependency) {
this.myDependency = myDependency;
}
// ...
}
```
在上面的示例中,通过在Setter方法上使用@Autowired注解,将MyDependency注入到MyService类中。
总结来说,当使用@Autowired时报错 "Field injection is not recommended",建议使用构造函数注入或者Setter方法注入来替代字段注入。
阅读全文