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 ...
随机推荐
- [知了堂学习笔记]_记一次BootStrap的使用
效果图如下: 一.简介: 什么是Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架. 什么是响应式布局? 引用一句Bootstrap的标题语 " ...
- Servlet和web服务器关系
前面的博客我详细的罗列了下Servlet的常用的类和接口,然后在前面的前面我类似tomcat模拟了一套web服务器,这里来做一个统一的整理,这样子可以更好的把握Servlet,也可以更好的了解下web ...
- 2017 .NET 開發者須知
筆記-Scott Hanselman 的 2017 .NET 開發者須知 转载http://blog.darkthread.net/post-2017-01-16-dotnet-dev-should- ...
- win7下JAVA环境变量配置方法
1.首先,根据自己的需要下载1.6或者1.7的JDK,安装JDK.(安装的时候记一下安装目录,后面会用到) 2.右键计算机→属性→高级系统设置→高级→环境变量,在系统变量部分新建名为"JAV ...
- Calendar使用方法
Calendar类的静态方法getInstance()可以初始化一个日历对象: Calendar now = Calendar.getInstance(); 可以使用下面三个方法把日历定到任何一个时间 ...
- 面试中的Https
在Http协议中有可能存在信息窃听或身份伪装的安全问题.使用HTTPS通信机制可以有效地防止这些问题. Https Http的缺点 通信使用明文(不加密),内容可能会被窃听. 不验证通信方的身份,因此 ...
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- Java源码分析系列之HttpServletRequest源码分析
从源码当中 我们可以 得知,HttpServletRequest其实 实际上 并 不是一个类,它只是一个标准,一个 接口而已,它的 父类是ServletRequest. 认证方式 public int ...
- androidstudio canary5一个bug
Android Studio最新开发版一直跟着升级.到Canary5的时候出了一个bug. app build.gradle添加自己编译的aar库,原本一直使用: compile(name:'ijkp ...
- xBIM 基本的模型操作
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...