Spring中@Service注解的作用与@Controller和@RestController之间区别

 更新时间:2023年03月30日 09:32:48   作者:包小志  
这篇文章主要介绍了Spring中@Service注解的作用与@Controller和@RestController之间的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

一、@Service注解

@Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。在Controller模块中可以通过@Autowired注入service类。直接调用service类中方法。

@Service
@Primary
public class YtDesignInfoServiceImpl implements YtDesignInfoService {
    @Autowired
    private YtDesignInfoMapper ytDesignInfoMapper;
    @Override
    public YtDesignInfo getItem(String GCID){
        YtDesignInfoExample example = new YtDesignInfoExample();
        YtDesignInfoExample.Criteria criteria = example.createCriteria();
        criteria.andLProjectidEqualTo(GCID);
        List<YtDesignInfo> ytDesignInfos = ytDesignInfoMapper.selectByExample(example);
        return ytDesignInfos.get(0);
    }
}
@RestController
@Api(tags = "YantuController", value = "岩土管理")
@RequestMapping("/yantu")
public class YanTuController {
    @Autowired
    private YtDesignInfoService ytDesignInfoService;
    @Autowired
    private YtDuanmianService ytDuanmianService;
    @ApiOperation(value = "新增岩土成果的工程信息")
    @PostMapping(value = "/addYanTuItemInfo")
    public CommonResult<?> addYanTuInfo(Principal principal, @Validated YtDesignInfo ytDesignInfo) {
        if (principal == null) {
            return CommonResult.unauthorized(null);
        }
        int i = ytDesignInfoService.addItem(ytDesignInfo);

        if (i>0) {
            return CommonResult.success("上传成功");
        } else {
            return CommonResult.failed("上传失败");
        }
    }
}

二、@Controller和@RestController的区别

1. @controller注解

  • @Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用。
  • @ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端,本人尝试了一下,如果返回的是String类型,则仍然是String。
  • 假如返回类型是Map类型,但是没有加@ResponseBody注解,只有@Controller修饰的时候,Spring以为会返回一个View(也就是MVC中的那C)但是返回的东西却是一个Map,页面会报错。
@Controller
public class FileUploadController {
	//跳转到上传文件的页面
	//在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。
	@RequestMapping(value="/gouploadimg", method = RequestMethod.GET)
	public String goUploadImg() {
		//跳转到 templates 目录下的 uploadimg.html
		return "uploadimg";
	}
	//处理文件上传
	//若返回json等内容到页面,则需要加@ResponseBody注解
	//如果返回的是String类型,则仍然是String。
	@RequestMapping(value="/testuploadimg", method = RequestMethod.POST)
	@ResponseBody
	public String uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request) {
		System.out.println("调用文件上传方法");
		String contentType = file.getContentType();
		String fileName = file.getOriginalFilename();	
		return filename;
	}
}

2. @RestController注解

相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

@RestController /* @Controller + @ResponseBody*/
public class HospitalController {
    //注入Service服务对象
    @Autowired
    private HospitalService hospitalService;
    /**
     * 查询所有医院信息(未分页)
     */
	//@RestController注解可以直接返回json数据
	//@Controller注解无法返回json数据
    @RequestMapping(value = "findAllHospital",method = RequestMethod.GET)
    public  List<Hospital> findAllHospital(){
        List<Hospital> hospitalList= hospitalService.findAllHospital();
        return hospitalList;
    }
}

到此这篇关于Spring中@Service注解的作用与@Controller和@RestController之间区别的文章就介绍到这了,更多相关Spring @Service注解作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot2.1.4中的错误处理机制

    SpringBoot2.1.4中的错误处理机制

    这篇文章主要介绍了SpringBoot2.1.4中的错误处理机制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • CyclicBarrier线程同步共享变量底层原理示例解析

    CyclicBarrier线程同步共享变量底层原理示例解析

    这篇文章主要为大家介绍了CyclicBarrier线程同步共享变量底层原理示例解析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案

    Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案

    今天小编就为大家分享一篇关于Jetty启动项目中引用json-lib相关类库报错ClassNotFound的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • java搭建ftp/sftp进行数据传递的全过程

    java搭建ftp/sftp进行数据传递的全过程

    ftp是一种文件传输协议,让客户端和服务端能够互相传递文件,图片等数据,sftp也是一种文件传输协议,但是相比较而言要比ftp安全性更好些,但是也有缺点就是传输效率低
    2021-07-07
  • SpringBoot实现文件上传下载功能小结

    SpringBoot实现文件上传下载功能小结

    最近做的一个项目涉及到文件上传与下载功能。SpringBoot后台如何实现文件上传下载呢?下面有单文件上传和多文件上传功能,感兴趣的朋友一起看看吧
    2017-08-08
  • Java面试题冲刺第十六天--消息队列

    Java面试题冲刺第十六天--消息队列

    这篇文章主要为大家分享了最有价值的三道关于消息队列的面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • shiro整合springboot前后端分离

    shiro整合springboot前后端分离

    这篇文章主要介绍了shiro整合springboot前后端分离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 基于selenium-java封装chrome、firefox、phantomjs实现爬虫

    基于selenium-java封装chrome、firefox、phantomjs实现爬虫

    这篇文章主要介绍了基于selenium-java封装chrome、firefox、phantomjs实现爬虫,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-10-10
  • Java开发之ssm三大框架整合

    Java开发之ssm三大框架整合

    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎
    2022-05-05
  • SpringBoot如何优雅的实现重试功能

    SpringBoot如何优雅的实现重试功能

    这篇文章主要详细介绍了SpringBoot如何优雅的实现重试功能的步骤详解,文中有详细的代码示例,具有一定的参考价值,感兴趣的同学可以借鉴阅读
    2023-06-06

最新评论