Spring注解的使用和区别:@Component、@Service、@Repository、@Controller
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。 在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了 @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息: 1. <?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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" 注入方式: 把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注 入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,然后属性加上 @Autowired后不需要getter()和setter()方法,Spring也会自动注入。至于更具体的内容,等对注入的方式更 加熟练后会做个完整的例子上来。 注解: 在 spring的配置文件里面只需要加上<context:annotation-config/> 和<context:component-scan base-package="需要实现注入的类所在包"/>,可以使用base-package="*"表示全部的类。 <context:component-scan base-package=”com.eric.spring”> 其中base-package为需要扫描的包(含所有子包) 在接口前面标上@Autowired和@Qualifier注释使得接口可以被容器注入,当接口存在两个实现类的时候必须指定其中一个来注入,使用实现类首字母小写的字符串来注入,如:
否则可以省略,只写@Autowired 。 @Service服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,例如Chinese实例化为chinese,如果需要自己改名字则:@Service("你自己改的bean名")。 @Controller用于标注控制层组件(如struts中的action) @Repository持久层组件,用于标注数据访问组件,即DAO组件 @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。 @Service @Repository getBean 的默认名称是类名(头字母小写),如果想自定义,可以@Service(“aaaaa”) 这样来指定,这种 bean默认是单例的,如果想改变,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。 可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() { } @PreDestroy public void destory() { } |
转载于:https://www.cnblogs.com/suncoolcat/p/3343490.html
Spring注解的使用和区别:@Component、@Service、@Repository、@Controller相关推荐
- Spring注解的使用步骤,@Component注解创建的对象名称,常用注解Component、Repository、Service以及Controller的区别
1. 注解的使用 1.1 pom.xml文件加入spring-context依赖,间接加入了spring-aop依赖,有aop依赖才能使用注解 1.2 在spring配置文件中加入组件扫描器标签< ...
- Spring 注解比较,@Bean 和 @Component的区别
点击下方"IT牧场",选择"设为星标" 本文打算介绍几个不太容易说出其区别,或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较, ...
- Spring注解@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...
- Spring注解创建Bean的几种方式
Spring注解创建Bean的几种方式 1.@Component系列 @Component @Service @Repository @Controller @Configuration 2. 依附于 ...
- Spring注解——使用@ComponentScan自动扫描组件
1.创建一个配置类,在配置类上添加 @ComponentScan 注解.该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>. pac ...
- SSM框架---Spring注解@Component、@Repository、@Service、@Controller区别
原文链接 很长时间没做web项目都把以前学的那点框架知识忘光了,今天把以前做的一个项目翻出来看一下发现用·@Component标记一个组件,而网上有的用@Service标记组件,我晕就查了一下资料: ...
- Spring 注解 @bean 和 @component 的区别, 你知道吗?
本文打算介绍几个不太容易说出其区别,或者用途的 Spring 注解,比如 @Component 与 @Bean 的比较,@ControllerAdvice 是如何处理自定义异常的等等. Spring ...
- Spring中的@ Component,@ Repository和@Service批注有什么区别?
@Repository @Component , @Repository和@Service批注可以在Spring中互换使用吗,或者除了充当注解设备外,它们还提供任何特定功能吗? 换句话说,如果我有一个 ...
- Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用...
Spring @Autowired,@Resource,@Required注解的用法和作用 Spring中 @Autowired标签与 @Resource标签 的区别 Spring注解@Compone ...
最新文章
- [置顶] 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-2.service)...
- 初学__Python——Python的流程控制语句 if、for、while
- win10redis闪退
- Packet for query is too large
- 添加右键菜单_如何在Windows文件夹的右键菜单中添加“打开PowerShell”
- 前端学习(3250):一个简单的文件
- springboot2——MyBatis入门
- vuedraggle choose_如何拆分员工工资条,教你一招一学就会。(五)函数CHOOSE
- QtCreate编译器在调试程序时,右侧的变量表达式值视图被不小心关闭了
- 基于Spark机器学习和实时流计算的智能推荐系统
- ISP缓存机制及登录串号现象
- python arp 网关_python使用arp欺骗伪造网关的方法
- 存储简单数据——Preferences
- 2021年软件测试工具总结——十大新UI功能测试工具
- windows下网络诊断基本命令
- 多线程练习(龟兔赛跑)
- outlook qr码在哪里_爱奇艺极速版邀请码是多少在哪里填写 邀请码怎么输入方法...
- Delta3d 2.8 版本终于发版
- 这段代码不讲武德,劝你耗子尾汁
热门文章
- java 显示图片的一部分_求只显示图片上半部分三分之一的写法
- 关于 IMPP/XMPP/SIMPLE 这几种即时通讯协议和NAT traversal
- 限制滥用举报功能的小建议
- 可运行的C语言程序的拓展名,可运行的c语言程序的扩展名为什么?
- 7个现象告诉你手游圈为什么会有寒冬
- golang面向对象思想和实现
- MFC 教程【11_MFC下的文件类 】
- 微软 服务器系统,微软正在开发Windows Server 2022服务器系统
- 链路聚合_链路聚合实验
- api获取控件窗口的矩形大小_DevExpress 通用控件系列(4):SimpleButton