在Web应用程序中初始化Autowired成员所需的最小配置是什么?

时间:2016-04-14 16:28:21

标签: java spring autowired servletcontextlistener servlet-container

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

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

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

可能需要一些文件: A.java web.xml spring-context.xml (用于配置B)和< strong> jars (春天和一个包含B的罐子)。

所需的最低配置和文件内容是什么?

2 个答案:

答案 0 :(得分:0)

根据this post,我创建了this project。让B发起的步骤:

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

    @Component
    @Path("/a")
    public class A {
    
        @Autowired
        B b;
    
        @GET
        @Path("/a")
        public String a() {
            return b.toString();
        }
    }
    

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

答案 1 :(得分:-2)

如果出于某种原因,您无法将A类配置为应用程序上下文中的bean,则可以使用A类实现SpringBeanAutowingSupport。这适用于Web环境。

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

public class A extends SpringBeanAutowiringSupport{
  @Autowired
  private B b;
}