Spring中的注解@Service @Component @Controller @Repository区别
@Service用于标注业务层组件,
@Controller用于标注控制层组件(如struts中的action),
@Repository用于标注数据访问组件,即DAO组件,
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
这四个注解其实都是和Component差不多只是在语义上有些不一样,修饰的方法
请看下面的一个例子
dao层
- package cn.lonecloud.pagekageauto.dao;
- /**
- * dao层的接口
- * @Title: UserDao.java
- * @Package cn.lonecloud.pagekageauto.dao
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:49:47
- */
- public interface UserDao {
- public void save();
- }
dao层实现类
- package cn.lonecloud.pagekageauto.dao.impl;
- import org.springframework.stereotype.Repository;
- import cn.lonecloud.pagekageauto.dao.UserDao;
- /**
- * dao层的实现类
- * @Title: UserDaoImpl.java
- * @Package cn.lonecloud.pagekageauto.dao.impl
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:50:04
- */
- @Repository
- public class UserDaoImpl implements UserDao {
- @Override
- public void save() {
- System.out.println("测试保存");
- }
- //进行业务代码的实现
- }
Service层
- package cn.lonecloud.pagekageauto.service;
- /**
- * service接口
- * @Title: UserService.java
- * @Package cn.lonecloud.pagekageauto.service
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:50:20
- */
- public interface UserService {
- public void Usersave();
- }
service实现类
- package cn.lonecloud.pagekageauto.service.Impl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import cn.lonecloud.pagekageauto.dao.UserDao;
- import cn.lonecloud.pagekageauto.service.UserService;
- /**
- * service的实现类
- * @Title: UserServiceImpl.java
- * @Package cn.lonecloud.pagekageauto.service.Impl
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:50:36
- */
- @Service
- public class UserServiceImpl implements UserService{
- //下面进行业务代码的实现
- @Autowired//自动注入
- UserDao userDao;
- @Override
- public void Usersave() {
- // TODO Auto-generated method stub
- System.out.println("service执行保存方法");
- userDao.save();
- }
- }
dto中间类
- package cn.lonecloud.pagekageauto.dto;
- import org.springframework.stereotype.Component;
- /**
- * 中间类
- * @Title: DtoClass.java
- * @Package cn.lonecloud.pagekageauto.dto
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:51:46
- */
- @Component
- public class DtoClass {
- public void say(){
- System.out.println("我是dto");
- }
- }
控制层
- package cn.lonecloud.pagekageauto.Controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import cn.lonecloud.pagekageauto.dto.DtoClass;
- import cn.lonecloud.pagekageauto.service.UserService;
- /**
- * 控制层类
- * @Title: UserController.java
- * @Package cn.lonecloud.pagekageauto.Controller
- * @Description:
- * @author lonecloud
- * @date 2016年8月7日 上午11:50:56
- */
- @Controller
- public class UserController {
- @Autowired
- private UserService userService;
- @Autowired
- public DtoClass dtoClass;
- /**
- * 保存方法
- * @Description:
- */
- public void save(){
- System.out.println("控制层save");
- dtoClass.say();
- userService.Usersave();
- }
- }
测试类
- package cn.lonecloud.test.autoTest;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import cn.lonecloud.pagekageauto.UserBean;
- import cn.lonecloud.pagekageauto.Controller.UserController;
- import cn.lonecloud.util.SpringUtil;
- public class MyTest {
- ApplicationContext applicationContext = null;
- @Before
- public void before() {
- applicationContext = SpringUtil.getApplicationContext();
- }
- // @Test
- // public void Test01() {
- //
- // UserBean userBean = applicationContext.getBean(UserBean.class);
- // userBean.setAddress("sca");
- // System.out.println(userBean);
- // System.out.println(userBean.hashCode());
- // UserBean userBean2 = applicationContext.getBean(UserBean.class);
- // userBean2.setAddress("cds");
- // System.out.println(userBean2.hashCode());
- // System.out.println(userBean2);
- // }
- @Test
- public void controller(){
- UserController controller = applicationContext.getBean(UserController.class);
- controller.save();
- }
- }
Spring中的注解@Service @Component @Controller @Repository区别的更多相关文章
- 关于Spring注解 @Service @Component @Controller @Repository 用法
@Component 相当于实例化类的对象,其他三个注解可以理解为@Component的子注解或细化. 在annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个spr ...
- Spring中的注解@Value("#{}")与@Value("${}")的区别
1 @Value("#{}") SpEL表达式 @Value("#{}") 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法.当然还有可 ...
- spring----spring中的注解@service等的作用
service 是有用的相当于 xml配置中得bean id = service 也可以不指定 不指定相当于 bean id = com. service.service 就是这个类的全限定名 ...
- Spring中常用注解的介绍
spring中使用注解时配置文件的写法: <?xml version="1.0" encoding="UTF-8"?> <span style ...
- Spring中常用注解
1.@Component 创建类对象,相当于配置<bean/> 2.@Service @Service与@Component功能相同,写在ServiceImpl类上 3.@Reposito ...
- 【进阶】Spring中的注解与反射
[进阶]Spring中的注解与反射 目录 [进阶]Spring中的注解与反射 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody ...
- Spring中Value注解的使用
Spring中Value注解的使用 分类: Spring2014-08-16 17:28 2985人阅读 评论(0) 收藏 举报 有的时候我们定义了Properties文件,并且使用Spring的Pr ...
- 全面解析Spring中@ModelAttribute注解的用法
本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:全面解析Spring中@ModelAttribute注解的用法: @ModelAttribute注解用于将方法的参数或方法的返回值绑定到 ...
- Spring中异步注解@Async的使用、原理及使用时可能导致的问题
前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <面试必杀技,讲一讲Spring中的循环依赖> 然后,很多同学碰到了下面这个问题,添加了S ...
随机推荐
- Hyperledger Fabric Read-Write set semantics——读写集
Read-Write set semantics(读写集) 本文讨论了关于读写集当前实现的细节. Transaction simulation and read-write set(事务模拟和读写集) ...
- 原生 JS 实现一个瀑布流插件
更好的阅读体验,点击 原文地址 瀑布流布局中的图片有一个核心特点 -- 等宽不定等高,瀑布流布局在国内网网站都有一定规模的使用,比如pinterest.花瓣网等等.那么接下来就基于这个特点开始瀑布流探 ...
- MySQL服务器最大连接数怎么设置才合理[转]
如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数 ...
- linux批量添加10个用户并将其随机密码和用户名写入文件
需求: 批量新建10个测试用户,并且让其密码随机,把用户名和密码写入一个文件,并有创建时间和创建者 #!/usr/bin/python # -*- coding: utf-8 -*- import o ...
- Oracle 视图 (待更新, 缓存)
参考: 视图.索引.存储过程优缺点: http://www.cnblogs.com/SanMaoSpace/p/3147059.html oracle视图总结(转):http://tianwei013 ...
- JMeter之断言 - 响应文本
1. 响应数据: 2. 添加响应断言: 3.设置响应断言,本例中 设置 响应文本 中 包括 success 字符串的 为真,即通过. 4.如果设置 响应文本 中 包括 error 字符串的 为真, ...
- awk 指定{}内x的替换
替换{}中的x为; 原字符串 oxo{axbxc}oxo{dxexf}oxo 结果 oxo{a;b;c}oxo{d;e;f}oxo awk '{for(i=1;i<=NF;i++){ ...
- 一个特殊的List去重问题的解决方案
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7039842.html 场景描述:公司新活动,需要在活动页面显示指定利率的四种投资项目,并且 ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...
- 本地工程引入maven工程的配置方式
一.准备 IDE: IntelliJ IDEA 2016.3.1 maven: 3.5.2 JDK: 1.8 操作系统: Window 7 二.配置 1. maven 3.5 下载地址:http:// ...