spring 注入manager ,dao:
<context:annotation-config/>
<context:component-scan base-package="com.longxia.**.manager" />
<context:component-scan base-package="com.longxia.**.dao" />
编写manager (package com.longxia.springmvc.manager.usermanager)
IUserManager.java
public interface IUserManager {
public void findUserByUserName(String userName);
UserManagerImpl.java
@Service
public class UserManagerImpl implements IUserManager {
private static final Logger logger = LoggerFactory.getLogger(UserManagerImpl.class);
@Autowired
private IUserDao userDao;
@Autowired
private IManagerUserDao managerUserDao;
IUserDao.java
package com.longxia.springmvc.dao.userdao;
import java.util.List;
import com.longxia.springmvc.dao.IHibernateBaseDao;
import com.longxia.springmvc.model.User;
/**
* @author xialong
*
*/
public interface IUserDao extends IHibernateBaseDao<User>{
public List<User> findAllUsers();
}
UserDaoImpl.java
package com.longxia.springmvc.dao.userdao;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Component;
import com.longxia.springmvc.dao.HibernateBaseDao;
import com.longxia.springmvc.model.User;
/**
* @author xialong
*
*/
@Component
public class UserDaoImpl extends HibernateBaseDao<User> implements IUserDao {
@Resource
private SessionFactory springmvcSessionFactory;
@PostConstruct
public void initSessionFactory() {
super.setSessionFactory(springmvcSessionFactory);
}
/* (non-Javadoc)
* @see com.longxia.springmvc.dao.userdao.IUserDao#findAllUsers()
*/
@Override
public List<User> findAllUsers() {
String hql = "from User";
return this.getHibernateTemplate().find(hql);
}
}
题外话:
@Component;@Controller;@Service;@Repository
在annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个spring容器管理的类。即就是该类已经拉入到spring的管理中了。而@Controller, @Service, @Repository是@Component的细化,这三个注解比@Component带有更多的语义,它们分别对应了控制层、服务层、持久层的类。
@Repository标签是用来给持久层的类定义一个名字,让Spring根据这个名字关联到这个类。
@Service是用于服务层的IServiceImpl类文件,功能与@Repository类似。
另外标签:@Autowired 用来注入。