0

@Autowired使用注释初始化以下类成员所需的最小配置是什么:

public class A {
  @Autowired
  private B b;
  // ...
}

调用 A a = new A() 时,我希望b从预定义的 bean 进行初始化,而无需在代码中对其进行配置。

可能需要一些文件:A.javaweb.xmlspring-context.xml(用于配置 B)和jars(spring 和包含 B 的 jar)。

最少需要的配置和文件内容是什么?

4

2 回答 2

0

基于这篇文章,我创建了这个项目。B启动的步骤:

  1. 下载并解压缩压缩文件夹。
  2. 运行mvn clean install
  3. 将战争 (spring-autowired-1.0-SNAPSHOT.war) 从目标复制到 Web 服务器的 webapps 文件夹。
  4. 运行服务器。(对于tomcat:./catalina.sh 运行)
  5. 调用 API 并查看 B 的 hascode - curl -X GET http://localhost:8080/spring-autowired-1.0-SNAPSHOT/rest/a/a
  6. 请参阅b已初始化 - 不为空。

实际班级:

@Component
@Path("/a")
public class A {

    @Autowired
    B b;

    @GET
    @Path("/a")
    public String a() {
        return b.toString();
    }
}

* 我的实现与 mkyong 的区别在于我的 pom 具有较少的依赖项,并且@Autowired成员不是接口。

于 2016-04-17T08:25:46.690 回答
-2

如果由于某种原因您无法在应用程序上下文中将 A 类配置为 bean,您可以让 A 类实现 SpringBeanAutowingSupport。这适用于网络环境。

SpringBeanAutowingSupport 默认构造函数从请求中查找应用程序上下文。然后它注入依赖项。

public class A extends SpringBeanAutowiringSupport{
  @Autowired
  private B b;
}
于 2016-04-14T16:41:22.263 回答