使用注解之后就可以不用在ioc容器里设置beanid了,直接在类中进行定义,注解方法在每一层都是不一样的
作用:在开发时对项目的每一层进行划分
* 功能介绍
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)、
@Repository用于标注数据访问组件,即DAO组件。
而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
(1)在spring容器中定义:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!--添加组件的自动扫描,在扫描范围的类中,都可以使用对注解的支持
base-package="cn.itcast":cn.itcast表示此时扫描的范围是在cn.itcast包中的所有类,都可以使用注解
注解包括@Component、@Service、@Controller、@Repository、还包括@Autowired,@Resource
-->
<context:component-scan base-package="cn.itcast"/>
</beans>
(2)在Dao层代码上定义:
/**
* @Repository标注在类的上面
* 相当于spring容器中定义:
* <bean id="userDaoImpl" class="cn.itcast.dao.UserDaoImpl"></bean>
* 此时如果没有为@Repository指定value属性的名称,此时就是按照类的名称作为spring容器中bean节点的id,并且首字母要小些
*
* @Repository(value="userDao")
* 相当于spring容器中定义:
* <bean id="userDao" class="cn.itcast.dao.UserDaoImpl"></bean>
*/
@Repository(value="userDao")
public class UserDaoImpl implements IUserDao {
public void save() {
System.out.println("执行UserDaoImpl类的save()方法!");
}
}
(3)在Service层定义:
/**
* @Service标注在类的上面
* 相当于spring容器中定义:
* <bean id="userServiceImpl" class="cn.itcast.service.UserServiceImpl"></bean>
* 此时如果没有为@@Service指定value属性的名称,此时就是按照类的名称作为spring容器中bean节点的id,并且首字母要小些
*
* @Service(userService)
* 相当于spring容器中定义:
* <bean id="userService" class="cn.itcast.service.UserServiceImpl"></bean>
*
* 再添加@Resource(name="userDao")
* 此时表示
* <bean id="userService" class="cn.itcast.service.UserServiceImpl">
* <property name="userDao" ref="userDao">
* </bean>
*/
@Service("userService")
public class UserServiceImpl implements IUserService {
@Resource(name="userDao")
private IUserDao userDao;
public void saveUser() {
System.out.println("执行UserServiceImpl类的saveUser()的方法!");
userDao.save();
}
}