spring 不加 @Autowired 怎么利用setter方法注入
时间: 2024-02-09 21:09:23 浏览: 133
Spring注解注入属性
在Spring中,如果不使用 `@Autowired` 注解实现依赖注入,可以通过在XML配置文件中配置一个 `<bean>` 元素来创建需要注入的实例,然后在主类中定义需要注入对象的成员变量,并提供对应的setter方法,在setter方法中手动调用注入对象的setter方法,将注入对象赋值给主类的成员变量。
以下是一个简单的示例:
```java
public class MainClass {
private DependencyClass dependency;
public void setDependency(DependencyClass dependency) {
this.dependency = dependency;
}
public DependencyClass getDependency() {
return this.dependency;
}
// other methods
}
```
在XML配置文件中添加以下内容:
```xml
<bean id="dependency" class="com.example.DependencyClass">
<!-- 配置依赖类的属性 -->
<property name="someValue" value="some value" />
</bean>
<bean id="mainClass" class="com.example.MainClass">
<property name="dependency" ref="dependency" />
</bean>
```
在上面的示例中,我们在XML配置文件中定义了两个bean,分别是 `dependency` 和 `mainClass`。其中,`dependency` 是需要注入的对象,`mainClass` 是主类。
在 `dependency` 的配置中,我们使用 `property` 元素来配置 `someValue` 属性。这个属性的值是 `"some value"`,表示初始化时会将这个值注入到 `DependencyClass` 实例中。
在 `mainClass` 的配置中,我们使用 `property` 元素来配置 `dependency` 属性。这个属性的值是 `ref="dependency"`,表示将上面定义的 `dependency` bean 注入到 `MainClass` 实例中。
这样,在启动Spring容器时,它会自动创建 `dependency` 和 `mainClass` 两个实例,并将 `dependency` 实例注入到 `mainClass` 实例的 `dependency` 属性中。这样我们就完成了依赖注入。
阅读全文