当前位置:首页 > 开发 > 开源软件 > 正文

【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解

发表于: 2014-09-08   作者:bit1129   来源:转载   浏览:
摘要: 在Spring常用注解第一步部分【Spring框架一】Spring常用注解之Autowired和Resource注解(http://bit1129.iteye.com/blog/2114084)中介绍了Autowired和Resource两个注解的功能,它们用于将依赖根据名称或者类型进行自动的注入,这简化了在XML中,依赖注入部分的XML的编写,但是UserDao和UserService两个bea

在Spring常用注解第一步部分【Spring框架一】Spring常用注解之Autowired和Resource注解(http://bit1129.iteye.com/blog/2114084)中介绍了Autowired和Resource两个注解的功能,它们用于将依赖根据名称或者类型进行自动的注入,这简化了在XML中,依赖注入部分的XML的编写,但是UserDao和UserService两个bean仍然要在XML中进行注册,能否将UserDao和UserService两个bean(将它们进行一般后,就是泛指持久化层bean和业务逻辑层bean)也通过注解的方式而无需在XML中进行声明?

 

答案是可以的,Spring提供了一组通过自动检测将对应的类对象注册为bean的注解,

  • Component
  • Repository
  • Service
  • Contoller

Component是一个广泛的概念,泛指一个项目中某一个组件。通常,一个项目根据分层设计为请求控制层,业务逻辑层,持久化层和模型层。由于模型是变化的(或者它的作用于是Request),模型层基本不会让Spring进行管理。Component可以用于请求控制层,业务逻辑层,持久化层任意一层的组件,为了使注解更加清晰,Spring针对每一层提供了不同的注解,

请求控制层,业务逻辑层,持久化层分别对应Controller,Service和Repository三个注解,这只是一个分层的约定,Spring不会强制业务逻辑层的Service一定使用@Service注解,也不会强制持久化层一定使用@Repository注解,或者说使用了@Repository注解就一定表示持久化层。@Component,@Repository,@Service,@Controller是可以通用的,只不过用了@Repository,@Service,@Controller更清晰直观的表示注解的类是一个持久化层的组件,业务逻辑层的组件,请求控制组件

 

正如为了使用@Autowired和@Resource注解,在Spring的配置文件中,需要加上一行XML配置

 

 

 <context:annotation-config/>

 

为了使Spring自动识别项目中的自动注册bean的注解生效,需要在XML配置中添加如下一行:

 

 

    <context:component-scan base-package="com.tom.user"/>
 

 

 

实例

1. UserDao.java需要添加@Repository注解

2. UserService.java需要添加@Service注解,UserServer依赖的IUserDao字段需要添加@Autowired注解

3. 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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/aop
						http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
						http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context.xsd
						http://www.springframework.org/schema/tx
						http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    
    <!--使注解@Autowired,@Resource生效--> 
    <context:annotation-config/> 
    <!--使注解@Component,@Repository,@Service,@Controller生效-->
    <context:component-scan base-package="com.tom.user"/>
 </beans>
 

 

 4. 如果@Service和@Repository注解,全部替换为@Component注解,结果也是一样的

5. 此时的UserService没有bean的名称,如何获得UserService在Spring中注册的实例,通过ApplicationContext的根据类型获得bean实例的方法ApplicationContext.getBean(Class beanClazz)

6. @Component,@Repository,@Service,@Controller都有一个value属性,为value指定一个有意义的名义,比如@Service(value="userService"),那么可以通过userService这个名字来获取UserService在Spring配置的实例

 

 

        ClassPathXmlApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext-autowired.xml");
        IUserService userService = cxt.getBean(UserService.class);
//        IUserService userService = cxt.getBean("userService", UserService.class);

 

 

 

 

【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
我现在学的是spring4.2 今天主要学习了Spring MVC注解 引入注解可以减少我们的代码量,优化我们的代
昨天对Spring注解有了一个整体认识,至少完成了一个简单的web应用搭建。当然,还不完善,这仅仅只是
SpringMVC Controller 介绍 一、简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServl
最近在用Spring boot做REST风格接口的新架构,由于已经快2年没有大规模使用Spring MVC了,发现很多
引入通知是一种特殊的通知类型。它通过为接口提供实现类,允许对象动态地实现接口,就像对象已经在
在 classpath 中扫描组件 组件扫描(component scanning): Spring 能够从 classpath 下自动扫描, 侦
上篇博文《Spring Aop实例之xml配置》中,讲解了xml配置方式,今天来说说AspectJ注解方式去配置spri
1.spring.xml中配置数据源 2.配置事务管理 配置好之后就可以在Service端通过注解@Transactional来进
(1) 导入包,包结构如下图所示: (2) 配置web.xml,如下所示: <?xml version="1.0" encoding="U
最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号