在下面的代码片段中使用 set 方法的目的

Purpose of using set method in below code snippet

我正在阅读 Spring 教程,我发现了以下代码片段:

public class EmployeeRestController {
    private Logger logger = LoggerFactory.getLogger(EmployeeRestController.class);

    @Autowired
    private EmployeeService employeeService;

    public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }
}

我的问题是,为什么在没有调用此方法的情况下使用此方法。:

public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

谢谢

如果您使用 spring 依赖注入来设置对 class 属性 的依赖,我认为此 setter 方法没有任何意义。这就是 EmployeeRestController 正在发生的事情,通过对员工服务使用 @Autowired 注释 属性 private EmployeeService employeeService; 您也可以通过这种方式使用 setter 级依赖注入

 @Autowired
 public void setEmployeeService(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

在 setter 上使用 @Autowired 而不是私有属性是一个很好的建议做法。

如果你已经使用了@Autowired那么就不需要setmethod所以参考下面的代码:

@Controller
public class EmployeeRestController {
private Logger logger = LoggerFactory.getLogger(EmployeeRestController.class);

@Autowired
private EmployeeService employeeService;
    } 

@Service
public class EmployeeService{
 }