我开发了一个包含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 app lib文件夹并添加对构建浴中数据层的引用时,我有一条错误消息
注入自动连接的依赖项失败;嵌套异常是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的引用时,我发现了相同的异常。
答案 0 :(得分:0)
您确定不会从您的测试用例中引发此异常:
public class testcase1 {
@Autowired
private UserImpl userImpl;
您可以在@Service注释中显式设置bean名称,并在@Autowired中使用此名称以确保正确配置。