我想試試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和後來的資源。所以我的想法
感謝您閱讀此。
是否應用程序上下文您在'@ ContextConfiguration'註釋中定義的'test-project-admin-config.xml'具有與您在應用中使用的內容相同的內容嗎?它需要在那裏進行組件掃描。否則,它不會找到你的班級。 – 2011-04-11 15:55:12