0

我开发了一个包含 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 的引用时,我发现了同样的异常。

4

1 回答 1

0

您确定没有从您的测试用例中引发此异常:

public class testcase1 {

    @Autowired
private UserImpl userImpl;

您可以在 @Service 注释中显式设置 bean 名称,并在 @Autowired 中使用此名称以确保正确配置。

于 2013-07-09T14:12:45.940 回答