Spring注解之@Component、@Controller、@Service、@Repository
@
Spring注解@Component、@Controller、@Service、@Repository放在一起讲的原因很简单,因为,这四个注解实际上没有任何本质区别,只是后三者只是涉及一些命名规范而已,四者的注解效果确实一致。关于这里的命名规范就好比苹果叫苹果,你不会说苹果是菠萝。这样的好处显然易见,听到别人说苹果,你就知道是苹果,不会想到菠萝。而编程中@Controller你会知道这是一个Controller表现层,@Service代表这是一个Service业务层。
1、使用这四个注解的前提
1、导入AOP的jar包【当然现在基本都是maven依赖,很少会注意到这一点,基本感觉不到】
2、导入Context约束
3、告知spring在创建容器时要扫描的包,使用注解必须在其范围内

如果不满足上面条件则将出现下面异常,宜春清切的叫他No bean异常
2、详解@Component
Component翻译过来就是组件的意思,读作:抗破然着 (理直气壮)
2.1、@Component作用
曾经XML的配置:
<bean id="XXX" class="com.XX.XXX </bean>
@Component注解的作用就和在XML配置文件中编写一个< bean >标签实现的功能是一样的,都是用于把当前类对象存入spring容器中。
2.2、@Component属性
@Component注解属性主要指的是value属性。value属性用于指定bean的id。当我们不写时,它的默认值是当前类名首字母改小写。当然一般情况下是不写的。比如:

2.3、@Component小结
作用:用于把当前类对象存入spring容器中
属性:value用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母改小写。
注意:当只有一个属性值的时候默认可以不写value=
3、 @Service("XXX")或者@Service(value = "XXX")情况
当然不排除出现类似这种奇葩情况,可能在一奇葩需求上就出现了这种情况,显然宜春是碰到过了,当然如果读者朋友已经理解了我上面写的东西,估计这个就很好理解了!
正确解读:这是一个service业务层类,并且被注册的bean的id为XXX。如果你的spring容器中没有一个组件id为XXX的,无疑运行指定报No bean named 'YYY'异常,注意这里的YYY不是XXX,长点心。
4、总结
至于@Controller、@Service、@Repository他们三个是spring框架为我们提供明确的三层使用的注解,使我们的三层对象更加清晰!
实际上这四个注解实际上没有任何本质区别,如果你喜欢,你完全可以把这四个注解当成一个注解用,当然这样的话老板可能就不喜欢你了。
如果本文对你有一点点帮助,那么请点个赞呗,你的赞同是我最大的动力,谢谢~
最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!
欢迎各位关注我的公众号,里面有一些java学习资料和一大波java电子书籍,比如说周志明老师的深入java虚拟机、java编程思想、核心技术卷、大话设计模式、java并发编程实战.....都是java的圣经,不说了快上Tomcat车,咋们走!最主要的是一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔...

Spring注解之@Component、@Controller、@Service、@Repository的更多相关文章
- spring自动扫描的注解@Component @Controller @Service @Repository
@Component @Controller @Service @Repository的作用 1.@controller 控制器(注入服务)2.@service 服务(注入dao)3.@reposit ...
- @Component @Controller @Service @Repository@Resourse
@Component @Controller @Service @Repository@Resourse这些全部是Spring提供的注解. 其中@Component用来表示把一个类纳入spring容器 ...
- 注解@Component,@Controller,@Service,@Repository简单了解
Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发.@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring B ...
- Spring注解之@Component详细解析
@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@component (把普通pojo实例化到sprin ...
- SpringMVC常用注解@Controller,@Service,@repository,@Component
SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...
- 使用spring注解@Controller @Service @Repository简化配置
前言:在web项目中引入spring框架中的配置文件,我们给每一个java bean进行相关配置可以非常安全,便捷的管理我们的bean.那么,问题来了,如果一个项目中所涉及到的java bean十分庞 ...
- Spring @Autowired注解在非Controller/Service中注入为null
参考:https://blog.csdn.net/qq_35056292/article/details/78430777 问题出现: 在一个非controller/service类中,我需要注入Co ...
- controller,service,repository,component注解的使用对比
项目中的controller层使用@controller注解 @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象.分发处理器将会扫描使用了 ...
- SpringMVC常用注解@Controller,@Service,@repository,@Component,@Autowired,@Resource,@RequestMapping
1.controller层使用@Controller注解-用于呈现层,(spring-mvc) @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controlle ...
随机推荐
- MVC通过重写OnActionExecuting获取控制器,方法和域
一,如下代码 protected override void OnActionExecuting(ActionExecutingContext filterContext) {string _cont ...
- SQL数据库—<2>数据库基本操作(CRUD)
学习基本操作语句之前先简单了解数据库的基本数据类型: 数据类型: 二进制数据:以十六进制形式存储 固定长度:binary 可变长度:varbinary 字符数据 ...
- 关于uboot一些概念
U-boot的环境变量值得注意的有两个: bootcmd 和bootargs. bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境 ...
- Thinkphp5.0 自定义命令command的使用
在app下的command文件中,定义命令所在的模块以及命名. 然后保存,打开cmd,php think 定义的那个command的名字,完整的命令行为:php think clearInvalidO ...
- java命令-jstack
jstack用于生产java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,比如线程间死锁.死循环. ...
- Spring整合SpringDataJpa配置文件头
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- 【TCP】四次握手原因 / TIME_WAIT作用
为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 例子: 假设client发起连接的连接请求报文段在网络中没有丢失,而是在某个网络节点长时间滞留了,导致延迟到达ser ...
- BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(后缀自动机)
传送门 解题思路 因为叶节点不超过\(20\)个,所以可以枚举这些叶节点,并把这些节点当做根扫整棵树.可以证明所有的子串一定可以被便利到,然后可以对这些串建广义后缀自动机.\(dfs\)的时候要记录一 ...
- inline-block空隙怎么解决
方法一:移除空格 元素间留白间距出现的原因就是标签段之间的空格,因此,去掉HTML中的空格,自然间距就木有了.考虑到代码可读性,显然连成一行的写法是不可取的,我们可以: <div class=& ...
- (转)图文详解MyEclipse中新建Maven webapp项目的步骤
转:https://blog.csdn.net/ClementAD/article/details/46592557 MyEclipse中创建新的Maven项目(webapp目录结构)过程如下: ...