# 春天的自动装配注释 > 原文: [https://javatutorial.net/autowired-annotation-in-spring](https://javatutorial.net/autowired-annotation-in-spring) @Autowired 批注是实现依赖注入的一种相对较新的样式。 它允许您将其他豆注入另一个所需的豆中。 与@ 必需的批注类似,@ Autowired 批注可用于在 setter 方法以及构造函数和属性上“自动装配” bean。 ![java-featured-image](img/e0db051dedc1179e7424b6d998a6a772.jpg) ## @Setter 方法上的自动标注 请注意,在 setter 方法上使用@Autowired 批注时,它会自动摆脱 XML 配置文件中的 <属性> 元素。 相反,当 Spring 发现使用@Autowired 注释的 setter 方法时,它将对该特定方法执行 **byType** “自动装配”。 让我们看看@Autowired 在实践中。 更具体地说,在设置方法上使用@Autowired。 ### ExampleService.java ```java public class ExampleService { private Employee employee; @Autowired public void setEmployee(Employee emp) { // setting the employee employee = emp; } } ``` ### 分解 上面的示例中没有什么花哨的。 我们只有一个名为 **ExampleService** 的服务类,该类具有一个 **Employee** 类型的实例变量,并且有一个名为 **setEmployee(Employee emp)**的设置方法,该方法仅用于设置雇员 作为论证给出的任何东西。 感谢@Autowired 批注,在实例化 ExampleService 时,将 Employee 的实例作为该方法的参数注入。 ## 构造函数上的@Autowired 注释 ```java public class ExampleService { private Employee employee; @Autowired public ExampleService(Employee employee) { this.employee = employee; } @Autowired public void setEmployee(Employee emp) { // setting the employee employee = emp; } } ``` 再次感谢@Autowired 注释,当实例化 ExampleService 时,将 Employee 的实例作为构造函数的参数注入。 ## 属性上的@Autowired 注释 自动装配属性节省了我们的时间和代码行。 怎么样? 好吧,当我们在属性上使用该批注时,这些属性不再需要 getter 和 setter。 酷吧? ```java public class ExampleService { @Autowired private Employee employee; @Autowired public ExampleService(Employee employee) { this.employee = employee; } @Autowired public void setEmployee(Employee emp) { // setting the employee employee = emp; } } ``` 在上面的代码片段中,我们自动连接了名为 **employee** 的属性。 因此,它不再需要 setter 和 getter 方法。 **员工** 在创建 ExampleService 时被 Spring 注入。 ## 可选依赖项 @Autowired 也可以是可选的。 像这样: ```java public class ExampleService { @Autowired(required = false) private Employee employee; @Autowired public ExampleService(Employee employee) { this.employee = employee; } @Autowired public void setEmployee(Employee emp) { // setting the employee employee = emp; } } ``` **required = false** 使其不是必需的依赖项。 我们需要可选依赖项的原因是因为 Spring 希望在构造依赖项 bean 时@Autowired 的依赖项可用。 否则,将引发错误。 由于 **required = false** ,我们可以解决此问题。 ## 总结 通过使用@Autowired 批注,我们节省了几行代码,还节省了一些时间,因为我们不需要指定属性和构造函数参数。