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 用来注入。