关于spring使用注解定义组件

来源:互联网 发布:socket io 知乎 编辑:程序博客网 时间:2024/06/18 14:46

使用注解之后就可以不用在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 UserServiceImplimplements IUserService {

@Resource(name="userDao")

private IUserDaouserDao;

 

public void saveUser() {

System.out.println("执行UserServiceImpl类的saveUser()的方法");

userDao.save();

}

 

}


原创粉丝点击