spring mvc注解和spring boot注解
1 spring mvc和spring boot之间的关系
spring boot包含spring mvc。所以,spring mvc的注解在spring boot总都是可以用的吗?
spring boot通过spring提供一系列解决方案,包括spring mvc。
2 spring mvc到spring boot的简化之路
spring boot和spring、spring mvc不是竞争关系,spring boot使得我们可以更容易的使用spring和spring mvc。
2.1 手工配置到自动配置
使用spring的应用程序需要进行很多的配置,比如spring mvc,它需要配置视图解析器、配置DispatcherServlet,使用Hibernate和Mybatis的时候,还需要进行其它各种配置。spring boot引入自动配置,所有的这些spring boot都帮使用者做了,使用者不用再进行这些复杂的配置,而专注于业务。
2.2 使用starter进行依赖管理
比如使用spring mvc时,我们如果要用到Hibernate、jackson、log4j等等时候,我们需要设置好它们的版本。但是,spring boot引入starter了之后。我们只需要这一个依赖就可以了,spring boot会自动下载所有相关的依赖。我们只需要进行简单的配置就可以了。
综上,spring boot是对spring和spring mvc的简化,所以,spring和spring mvc的注解都可以在spring boot中用。所以,在spring boot项目中不需要去关心使用的是什么的注解,而关注这个注解的功能以及它能不能满足自己的需求即可。
3 spring boot专有的注解
3.1 @SpringBootApplication
它包含@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解。
3.2 @EnableAutoConfiguration
spring boot根据用户指定的start依赖,自动加载相应的模块,并且对相应的模块进行配置。
4 @Configuration注解
这个注解本质上是一个@Component,所以,它可以@ComponentScan可以处理被@Configuration注解的类。
该注解表示这类相当于是一个配置文件,基于注解的配置比基于xml的配置具有更好的可读性,更加方便。
5 @Component
表示这是一个bean。
6 @ComponentScan
弄懂了@ComponentScan就弄懂了Spring。
使用Spring的第一步是定义各种beans,即各种Components,用@Component、@Repository、@Service等来定义一个bean。但是,Spring不知道它们在哪里,所以,就需要@ComponentScan来指定它们的搜索路径。
6.1 如果是一个Spring boot的项目
因为在@SpringBootApplication注解中就已经包含了@ComponentScan注解,并且,默认的扫描的包是@SpringBootApplication注解类所在的包以及该包所有的子包。如果所有的bean都位于该包下面那么就不需要再用@ComponentScan指定包名了。
但是,如果除了这个包之外还有其它的包,那么就需要用@ComponentScan自定包名了。
例如
@ComponentScan("other package")
@SpringBootApplication
public class SpringBootInMyApplication {
}
一句话,@ComponentScan用于告诉spring去哪里找bean,因为Spring要做的事情有两个,第一,找bean,第二,建立它们之间的依赖关系。
6.2 如果是一个非Spring boot项目
我们一般会在xml中指定@ComponentScan所需要scan的pacakge。
7 @Controller和@RequestMapping
这个两个是Spring mvc的注解,前者负责处理DispatcherServlet分发的请求,后者负责定义请求的url和Controller方法之间的映射关系。
@RequestParam负责获取请求的参数。
8 @Configuration为什么和@ComponentScan一起使用
因为这样的类就相当于是applicaiton-bean.xml了,因为如果是xml配置spring mvc的话,@ComponentScan就是在xml中配置所扫描的package的。
本质上是一样的,就是指定@ComponentScan所扫描的包。
参考资料:
https://juejin.im/post/5aa22d1f51882555677e2492
spring mvc注解和spring boot注解的更多相关文章
- Spring MVC 4常用的那些注解
Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...
- [转]Spring MVC 4常用的那些注解
Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...
- 0054 Spring MVC的@Controller和@RequestMapping注解
@Controller注解 该注解用来指示一个类是一个控制器,在Spring的配置xml文件中开启注解扫描 <context:conponent-scan base-package=" ...
- 详解Spring MVC 4常用的那些注解
Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...
- java之spring mvc之初始spring mvc
1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...
- spring Mvc 执行原理 及 xml注解配置说明 (六)
Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...
- Spring MVC请求到处理方法注解配置的几种方式
@RequestMapping 这个是最常用的注解,可以配置在类上,也可以配置在方法上,两个一起作用组成方法能够响应的请求路径,举例如下 package org.zln.myWeb.controlle ...
- Spring MVC中使用FastJson自定义注解
最近在做.net转译成Java.其中遇到一个很蛋疼的问题.以前.net属性名都是首字母大写.造成返回给客户端的JSON字符串属性名称都是首字母大写.为了和前端对接我们以前都是如下图所示做法 publi ...
- Spring MVC零配置(全注解)(版本5.0.7)
// 核心配置类 package spittr.config; import org.springframework.web.servlet.support.AbstractAnnotationCon ...
- 【swagger】2.swagger提供开发者文档--返回统一格式篇【spring mvc】【spring boot】
接着上一篇来说, 不管正常返回结果还是后台出现异常,应该返回给前台统一的响应格式. 所以这一篇就为了应对解决这个问题. ======================================== ...
随机推荐
- MySQL日期函数的用法几则
1.将Date类型变成年月日时分秒的形式 select date_format(claimDate,'%Y-%m-%d %H:%i:%s') as claimdate from t1 2.只要年月日的 ...
- MySQL5.7 基于二进制包的安装
1.MySQL5.7安装注意事项 1.在MySQL5.7中mysql_install_db已经不再推荐使用,建议改成mysqld-initialize 完成实力初始化.(mysql_install_d ...
- 倍福TwinCAT(贝福Beckhoff)基础教程3.1 TwinCAT如何编写简单的计算器
把编写简单计算器作为入门的第一个范例程序,主要是因为比较简单,而且综合了HMI,数据类型,数据转换,PRG和FBD等功能块的混合等知识,个人认为还是比较适合用来快速上手的.由于是第一个范例,所以视频教 ...
- Shiro学习小结
1. What is Shiro? Apache旗下一个开源的Java权限框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架 ...
- [译] 通过 contentEditable 属性创建一个所见即所得的编辑器(富文本编辑器)
译者注 这只是一篇入门教程,介绍了一些基础知识,仅供参考,切不可因此觉得富文本编辑器很简单. 创建富文本编辑器是一个非常复杂的工程,需要考虑到方方面面,也有很多坑(请参考原文第一条评论). 为免误导大 ...
- 正则化--Lambda
模型开发者通过以下方式来调整正则化项的整体影响:用正则化项的值乘以名为 lambda(又称为正则化率)的标量.也就是说,模型开发者会执行以下运算: $$\text{minimize(Loss(Data ...
- SlidingMenu+Fragment实现当前最流行的侧滑
1 http://www.krislq.com/2013/03/android_case_slidingmenu_fragment/ 2 https://github.com/jfeinstein10 ...
- Delphi 与 C/C++ 数据类型对照表(最新的tokyo)
更新,下面这table为最新的tokyo基本数据类型与C++的对照关系: Delphi to C++ types mapping Go Up to Support for Delphi Data ...
- 转 【MQTT】在Windows下搭建MQTT服务器
MQTT简介 MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放.简单.轻量.易于实现.这些特点使它适用于受限环境.该协议的特点有: 使用发布/订阅消息模式,提供 ...
- 获取 Android 版本
var a = /Android(.+?);/.exec(window.navigator.userAgent) if (a) { this.AndroidVersion = +(a[1].trim( ...