以下代码段中使用set方法的目的

时间:2019-06-21 04:49:06

标签: java spring spring-boot spring-annotations

我正在阅读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;
    }

谢谢

2 个答案:

答案 0 :(得分:1)

我相信,如果您使用spring依赖注入来设置对类属性的依赖,则此setter方法没有任何意义。通过对员工服务属性EmployeeRestController使用@Autowired批注,private EmployeeService employeeService;就是这种情况。您还可以通过这种方式使用setter级别依赖项注入

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

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

答案 1 :(得分:0)

如果您已使用@Autowired,则不需要setmethod,因此请参考以下代码:

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

@Autowired
private EmployeeService employeeService;
    } 

@Service
public class EmployeeService{
 }