为什么人们使用 @Autowired 进行构造函数注入
Why people uses @Autowired for constructor injection
我看到很多人在构造函数中使用 @Autowired
注释来注入依赖项,如下所示
@Service
public class Employee {
private EmployeeService employeeService;
@Autowired
public Employee(EmployeeService employeeService) {
this.employeeService = employeeService;
}
:
:
}
据我所知,如今 Spring 是如此先进,Spring constructor/setter DI 即使没有 @Autowired
也能正常工作,如下所示
@Service
public class Employee {
private EmployeeService employeeService;
public Employee(EmployeeService employeeService) {
this.employeeService = employeeService;
}
:
:
}
想知道为什么人们用 @Autowired
注释来注释构造函数以注入依赖项。
谁能帮我解决这个问题
没有技术理由这样做(除非您有多个构造函数等)。最可能的原因是,人们已经学会了使用它,当 Spring 不支持构造函数的自动检测并且仍然有必要时,俗话说,旧习难改。此外,如果您搜索任何示例,您仍然会找到很多教程,其中使用了注释,这是另一个原因。它与 Spring 数据接口上的 @Repository
注释相同。那里的注释完全错误,但是这个网站上有很多问题,人们在他们的代码中添加了这个。
是的,您是对的 - 您不需要对 DI 使用注解 @Autowired
构造函数。
我认为有几个原因:
- 开发者不知道不需要
- 开发者使用注解强调它是 DI
- 程序员不信任 Spring 并希望确保 DI 工作
- 应用程序是用较低版本 Spring 编写并升级到更新版本 - 注释是它的产物
就我个人而言,我使用 @Autowired
注解只是为了增强代码的可读性,以便其他开发人员可以更轻松地阅读和理解代码。
我看到很多人在构造函数中使用 @Autowired
注释来注入依赖项,如下所示
@Service
public class Employee {
private EmployeeService employeeService;
@Autowired
public Employee(EmployeeService employeeService) {
this.employeeService = employeeService;
}
:
:
}
据我所知,如今 Spring 是如此先进,Spring constructor/setter DI 即使没有 @Autowired
也能正常工作,如下所示
@Service
public class Employee {
private EmployeeService employeeService;
public Employee(EmployeeService employeeService) {
this.employeeService = employeeService;
}
:
:
}
想知道为什么人们用 @Autowired
注释来注释构造函数以注入依赖项。
谁能帮我解决这个问题
没有技术理由这样做(除非您有多个构造函数等)。最可能的原因是,人们已经学会了使用它,当 Spring 不支持构造函数的自动检测并且仍然有必要时,俗话说,旧习难改。此外,如果您搜索任何示例,您仍然会找到很多教程,其中使用了注释,这是另一个原因。它与 Spring 数据接口上的 @Repository
注释相同。那里的注释完全错误,但是这个网站上有很多问题,人们在他们的代码中添加了这个。
是的,您是对的 - 您不需要对 DI 使用注解 @Autowired
构造函数。
我认为有几个原因:
- 开发者不知道不需要
- 开发者使用注解强调它是 DI
- 程序员不信任 Spring 并希望确保 DI 工作
- 应用程序是用较低版本 Spring 编写并升级到更新版本 - 注释是它的产物
就我个人而言,我使用 @Autowired
注解只是为了增强代码的可读性,以便其他开发人员可以更轻松地阅读和理解代码。