2011-04-11 55 views
0

我想試試spring 3.0.5的<context:component-scan base-package />功能。在spring項目中找不到hibernate autowire的麻煩,找不到bean錯誤

我在的applicationContext此項:

<context:component-scan base-package="com.project.personal.admin.model"/> 
<context:annotation-config /> 

我有知道如何創建任何POJO和DAO一個管理器類。

@Component("manager") 
public class ManagerImpl implements ApplicationContextAware, Manager { 

    ApplicationContext applicationContext; 

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
    this.applicationContext = applicationContext; 
    } 

    public User CreateUser(){ 
    return (User) getInstance("user", User.class); 
    } 


    public UserDAO createUserDAO(){ 
    return (UserDAO) getInstance("userDAO", UserDAO.class); 
    } 
//.... 
} 

一個POJO喜歡:

@Entity 
@Table(name = "user", uniqueConstraints = { 
@UniqueConstraint(columnNames = {"email"})}) 
@Component("user") 
public class User { 

    public User() { 
    this.dateCreated = new Date(); 
    } 


    @Id 
    @GeneratedValue(generator = "uuid") 
    @GenericGenerator(name = "uuid", strategy = "uuid.hex") 
    @Column(name = "id", length = 32) 
    private String id; 
    @Column(name = "email", length = 150) 
    private String email; 

//setters and getters 
} 

我的測試類是像這樣

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:META-INF/test-project-admin-config.xml"}) 
@TransactionConfiguration(defaultRollback=true) 
@Transactional 
public class UserDAOImplTest { 
    //@Autowired 
    @Resource(name="manager") 
    Manager manager; 

    @Autowired 
    UserDAO userDAO; 

    public UserDAOImplTest() { 
    } 

    @Test 
    public void testSave() { 
     User u1 = manager.CreateUser(); 
     u1.setEmail("[email protected]"); 
     u1.setFullname("joseph djomeda"); 
     u1.setPassword("psaumedetdavid"); 
     userDAO.save(u1); 
     User expResult = u1; 

     User result = (User)userDAO.getById(u1.getId()); 

     Assert.assertEquals(expResult, result); 
     Assert.assertEquals(expResult.getId(), result.getId()); 
    } 

    } 

我遇到這個錯誤:

org.springframework.beans。 factory.NoSuchBeanDefinitionException:沒有匹配[com.project.personal.admin.ma nager.Manager]找到依賴關係:預計至少有1個bean有資格作爲此依賴關係的自動連線候選。依賴註解:{@ org.springframework.beans.factory.annotation.Autowired(必需=真)}

大部分我創建ApplicationContext中的每一類條目的時間,它一直工作,此時沿着我想嘗試包掃描。 這是我做得不好的東西嗎?我已經嘗試了Autowired和後來的資源。所以我的想法

感謝您閱讀此。

+2

是否應用程序上下文您在'@ ContextConfiguration'註釋中定義的'test-project-admin-config.xml'具有與您在應用中使用的內容相同的內容嗎?它需要在那裏進行組件掃描。否則,它不會找到你的班級。 – 2011-04-11 15:55:12

回答

2

確保您Manager是在正確的包(或您base-package已正確設置)(我不會提到這一點,但它似乎懷疑有模型軟件包管理器)

+0

你好,你的迴應讓我意識到了一些事情。實際上這是一個maven項目。我有模型模塊,服務模塊和Web應用程序模塊。 pojos在'com.project.personal.model.domain'和manager中,而不是在'com.project.personal.model.manager'中,我把它放在'com.project.personal.manager'中。非常感謝 – 2011-04-11 16:11:06