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 ...
随机推荐
- Python解析JSON详解
JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数 描述 json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已 ...
- K8S API 调用
不好意,本人比较懒,OneNote 复制粘贴的时候就是自动变成图片了.请各位看官多多见谅. 遗留问题: 目前pod仅支持修改 * and(),so...
- IOS 使用 ZbarSDK 二维码扫描
1. 下载SDK https://github.com/bmorton/ZBarSDK 2. 引用到项目中 3. 添加引用 4. AppDelegate中添加下面代码 5. 在需要使用扫描的con ...
- enum 操作
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 转发:python 装饰器--这篇文章讲的通俗易懂
转 http://www.cnblogs.com/wupeiqi/articles/4980620.html 1.必备 #### 第一波 #### def foo(): print 'foo' ...
- java项目导出war包
@参考文档 假如项目名称为yanan,进入到yanan目录下打开cmd 执行:jar -cvf yanan.war ./* 命令详解: @参考文档1 @参考文档2 jar:jar工具是个java应用程 ...
- java 常见的几种运行时异常RuntimeException
常见的几种如下: NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常.IllegalArgumentException - 传递 ...
- lvs+keepalive构建高可用集群
大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言 Keepalived使用的vrrp协议方式,虚拟路由 ...
- SAP字符串处理
拼接字符串 CONCATENATE t1 t2 INTO result. "直接拼接 CONCATENATE t1 t2 INTO result SEPARATED BY space. &q ...
- Linux 下编译安装xCache命令速记
注意要先确保/path-to-php/bin/php-config存在下载链接: http://pan.baidu.com/s/1hqh5pDM #解压xcache源代码tar -zvxf xcach ...