使用@Autowired
注释初始化以下类成员所需的最小配置是什么:
public class A {
@Autowired
private B b;
// ...
}
当调用A A=new A()时,我希望b
从预定义的bean初始化,而无需在代码中配置它。
可能需要一些文件:A.java,web.xml、spring-context.xml(用于配置B)和jars。
最低需要的配置和文件内容是什么
基于这篇文章,我创建了这个项目。启动B的步骤:
- 下载并提取压缩文件夹
- 运行
mvn clean install
- 将war(spring-autowired-1.0-SNAPSHOT.war)从目标复制到web服务器的webapps文件夹中
- 运行服务器。(对于tomcat:./catalina.sh运行)
- 调用API并查看B的hascode-
curl -X GET http://localhost:8080/spring-autowired-1.0-SNAPSHOT/rest/a/a
- 请参阅
b
已初始化-不是null
实际类别:
@Component
@Path("/a")
public class A {
@Autowired
B b;
@GET
@Path("/a")
public String a() {
return b.toString();
}
}
*我的实现与mkyong的不同之处在于,我的pom具有较少的依赖性,并且@Autowired
成员不是接口。
如果由于某种原因无法在应用程序上下文中将类A配置为bean,则可以让类A实现SpringBeanAutowingSupport。这适用于web环境。
SpringBeanAutowingSupport默认构造函数从请求中查找应用程序上下文。然后它注入依赖项。
public class A extends SpringBeanAutowiringSupport{
@Autowired
private B b;
}