@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区别的更多相关文章

  1. 关于Spring注解 @Service @Component @Controller @Repository 用法

    @Component 相当于实例化类的对象,其他三个注解可以理解为@Component的子注解或细化. 在annotaion配置注解中用@Component来表示一个通用注释用于说明一个类是一个spr ...

  2. Spring中的注解@Value("#{}")与@Value("${}")的区别

    1 @Value("#{}") SpEL表达式 @Value("#{}") 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法.当然还有可 ...

  3. spring----spring中的注解@service等的作用

    service  是有用的相当于 xml配置中得bean  id = service  也可以不指定 不指定相当于 bean id =  com. service.service 就是这个类的全限定名 ...

  4. Spring中常用注解的介绍

    spring中使用注解时配置文件的写法: <?xml version="1.0" encoding="UTF-8"?> <span style ...

  5. Spring中常用注解

    1.@Component 创建类对象,相当于配置<bean/> 2.@Service @Service与@Component功能相同,写在ServiceImpl类上 3.@Reposito ...

  6. 【进阶】Spring中的注解与反射

    [进阶]Spring中的注解与反射 目录 [进阶]Spring中的注解与反射 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody ...

  7. Spring中Value注解的使用

    Spring中Value注解的使用 分类: Spring2014-08-16 17:28 2985人阅读 评论(0) 收藏 举报 有的时候我们定义了Properties文件,并且使用Spring的Pr ...

  8. 全面解析Spring中@ModelAttribute注解的用法

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:全面解析Spring中@ModelAttribute注解的用法: @ModelAttribute注解用于将方法的参数或方法的返回值绑定到 ...

  9. Spring中异步注解@Async的使用、原理及使用时可能导致的问题

    前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <面试必杀技,讲一讲Spring中的循环依赖> 然后,很多同学碰到了下面这个问题,添加了S ...

随机推荐

  1. Springmvc 并发访问的线程安全性问题

    首先对于spring的IOC来说,对象是由Spring来帮我们管理,也就是在Spring启动的时候,在Spring容器中,由Spring给我们创建的,Spring会帮我们维护,一般都是单例的,也就是一 ...

  2. linux pagecache限制与查看

    在linux服务器使用过程中,由于linux对内存的使用原则是能cache就尽量cache,所以会出现pagecache占用很多的情况. suse的版本有一个pagecachelimit的功能,cen ...

  3. SpringMvc4.x--Spring MVC的常用注解

    //下列代码显示用到的对象public class DemoObj { private Long id; private String name; public DemoObj() { //① sup ...

  4. 存储管理工具StorageExplorer的基本使用

    本文主要介绍Azure StorageExplorer工具的安装及基本使用 1.打开Azure官方链接:https://www.azure.cn/downloads/ 2.按照向导进行安装 3.可以通 ...

  5. Linux 修改环境变量报错

    报错如下: -bash: export: `=': not a valid identifier -bash: export: `/usr/local/sbin:/usr/local/bin:/sbi ...

  6. 【转】CString,string,char*综合比较

    (一)  概述 1.string和CString均是字符串模a板类: 2.string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中: 3.CString(typedef CString ...

  7. linux的8小时差问题解决

    下面是同步时间的解决方法: 1.vi /etc/sysconfig/clock #编辑文件 ZONE="Asia/Shanghai" UTC=false #设置为false,硬件时 ...

  8. CentOS下内存使用率查看

    freetotal        used        free      shared     buffers      cachedMem:        1815340     1628680 ...

  9. 使用mongoose和bcrypt实现用户密码加密

    前面的话 最近在做的个人项目中,需要对密码进行加密保存,对该操作的详细步骤记录如下 介绍 关于mongoose已经写过博客就不再赘述,下面主要介绍bcrypt bcrypt是一个由两个外国人根据Blo ...

  10. CDN设置回源host的意义

    CDN设置回源host的意义 如果CDN后端用户的的源站web服务上没有绑定加速域名,只绑定了其他域名,未限制域名访问(比如通过服务器IP可以访问到默认网站),可以在CDN控制台填写回源host,这样 ...