我正在使用 Spring 3.1 构建一个 Google App Engine 应用程序,但在我的一个 jar 中获取成员时遇到了问题。
我有三个项目:
服务器
server.model
server.persistence
我有一个 ant 构建脚本,这样当我的工作区构建时,它会为 server.model
和 server.persistence
创建 jar,并将它们放在正确的 lib 目录中对于 server
项目。
在 server
中,我可以从 server.model
和 server.persistence
中 Autowiring 东西,但在 server.model
我的 server.persistence
bean 没有连接,即使它们与 server
中的完全一样。
来 self 的 servlet 应用程序配置的片段:
<context:component-scan base-package="com.impersonal.server"/>
<bean autowire="byType" id="appEngineDataStore" class="com.impersonal.server.persistance.AppEngineDataStore"/>
<bean autowire="byType" id="userList" class="com.impersonal.server.model.UserList"/>
我在 server
项目和 server.model
项目中都有以下代码,只有服务器一个得到实现。这是失败的一个:
package com.impersonal.server.model;
import java.util.ArrayList;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import com.impersonal.server.persistance.AppEngineDataStore;
import com.impersonal.server.persistance.IDataStore;
public class UserList extends ArrayList<User>
{
private UserList(){}
//this is always null, but the same line in a class in the other project works
private @Autowired AppEngineDataStore _dataStore;
public UserList(UUID userId, String tempId)
{
String poo = "poo";
poo.concat("foo ");
int i = 3;
}
}
编辑:
刚刚在 server.model
项目中做了一个测试,试图将我没有在我的应用程序配置中定义为 bean 的东西 @Autowired,并且没有得到任何错误。如果我为 server
项目做同样的事情,我应该会得到一个“没有找到这样的 bean”的错误。
有什么想法吗?
最佳答案
我错误地实例化了我的对象。对于框架对象和 MVC Controller 之类的对象,您无需执行任何操作来连接您的 @Autowired 成员。
对于我动态创建的对象,我没有通过 IOC 容器,这就是它们的依赖关系没有得到满足的原因。
关于java - 为什么 Spring 不将我的 @Autowired 成员连接到依赖的 jar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134201/