我开发了一个包含 2 个项目的基本应用程序。第一个是数据层,第二个是 Web 应用程序(mvc 项目)
数据层包含以下内容
@Entity
@Table(name="users")
public class User implements Serializable {
.....
}
public interface UserBase {
.....
}
@Repository
public interface UserRepository extends JpaRepository <User, Long>{
}
@Service
public class UserImpl implements UserBase {
private final UserRepository repository;
@Autowired
public UserImpl(UserRepository repository) {
this.repository = repository;
......
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("Config/applicationContext.xml")
public class testcase1 {
@Autowired
private UserImpl userImpl;
@Test
public void test() {
.....
UserImpl.save(user);
.....
}
网络应用 @Controller 公共类 ManageUser {
@Autowired
UserImpl userImpl;
@RequestMapping("/addUser/")
public ModelAndView addUser() {
UserImpl.save(user);
.....
}
}
当我运行单元测试时,代码成功并且没有发现错误。但是,当我将数据层的输出 jar 放入 spring mvc web 应用程序的 lib 文件夹并在 build bath 中添加对数据层的引用时,我收到一条错误消息
Injection of autowired dependencies failed; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:com.my.domin.impl.UserImpl
注意: 我使用tomcat。我使用流动的配置:
<jpa:repositories base-package="com.sanatech.repository" />
<context:component-scan base-package="com.my.repository"/>
<context:component-scan base-package="com.my.domin.impl"/>
<context:component-scan base-package="com.my.domin"/>
<context:component-scan base-package="com.my"/>
<context:component-scan base-package="com.my.manageuser.controller"/>
<tx:annotation-driven/>
<context:annotation-config />
编辑
当我将单元测试分离到一个新项目并在构建浴中添加对数据层 jar 的引用时,我发现了同样的异常。