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注解的更多相关文章

  1. Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

  2. [转]Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

  3. 0054 Spring MVC的@Controller和@RequestMapping注解

    @Controller注解 该注解用来指示一个类是一个控制器,在Spring的配置xml文件中开启注解扫描 <context:conponent-scan base-package=" ...

  4. 详解Spring MVC 4常用的那些注解

    Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...

  5. java之spring mvc之初始spring mvc

    1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...

  6. spring Mvc 执行原理 及 xml注解配置说明 (六)

    Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...

  7. Spring MVC请求到处理方法注解配置的几种方式

    @RequestMapping 这个是最常用的注解,可以配置在类上,也可以配置在方法上,两个一起作用组成方法能够响应的请求路径,举例如下 package org.zln.myWeb.controlle ...

  8. Spring MVC中使用FastJson自定义注解

    最近在做.net转译成Java.其中遇到一个很蛋疼的问题.以前.net属性名都是首字母大写.造成返回给客户端的JSON字符串属性名称都是首字母大写.为了和前端对接我们以前都是如下图所示做法 publi ...

  9. Spring MVC零配置(全注解)(版本5.0.7)

    // 核心配置类 package spittr.config; import org.springframework.web.servlet.support.AbstractAnnotationCon ...

  10. 【swagger】2.swagger提供开发者文档--返回统一格式篇【spring mvc】【spring boot】

    接着上一篇来说, 不管正常返回结果还是后台出现异常,应该返回给前台统一的响应格式. 所以这一篇就为了应对解决这个问题. ======================================== ...

随机推荐

  1. log4j教程 9、HTMLLayout

    如果想生成一个HTML格式的文件,日志信息,那么可以使用 org.apache.log4j.HTMLLayout 格式化日志信息. HTMLLayout类扩展抽象org.apache.log4j.La ...

  2. 如何看一个VC工程具体是什么工程?

    VC6等可以创建MFC, Win32等工程,拿到一个工程,怎么判断是什么工程呢? VC6全文检索看看有没有theApp 如果有一般就是MFC的 (VS?)看看工程设置,入口点函数写的是什么,/subs ...

  3. NYOJ 49 开心的小明(01背包问题)

    时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是.妈妈昨天对他说: ...

  4. sql取随机结果集

    应用场景: 某日,接产品姐姐需求,网站搜索页在搜索特定的内容时候,会现实搜索不到结果!如衣服网站,搜索鞋子等.为了不直接呈现一个赤裸裸的无此商品页面,so,需要在搜索商品件数小于3时,在下面随机推荐本 ...

  5. Android之WebView的使用样例——WebSetting、WebViewClient、WebChromeClient

    点击查看原文 代码直接下载http://download.csdn.net/detail/metis100/8514837 第一步,xml Manifest中要设置网络权限,否则会出先 webpage ...

  6. postman里面的mockserver使用方法

    转载:http://blog.csdn.net/Cloud_Huan/article/details/78326159 首先说下mockserver是干啥的,从英文翻译理解就是模拟一个服务器,通俗点说 ...

  7. git学习——撤销操作

    修改最后一次提交:--amend 在提交完成后发现漏掉了几个文件没有加进去,或者提交信息写错了.想要修改怎么办? 现在可以先把需要修改的信息进行修改如:git add 添加没有添加的文件,vim &l ...

  8. C++11之function模板和bind函数适配器

    在C++98中,可以使用函数指针,调用函数,可以参考之前的一篇文章:类的成员函数指针和mem_fun适配器的用法.   简单的函数调用   对于函数: void foo(const string &a ...

  9. css3——position定位详解

    最近热衷于前端的开发,因为突然发现虽然对于网站.应用来说,功能处于绝对重要的地位,但是用户体验对于用户来讲同样是那么的重要,可以说是第一印象.最近在开发当中发现以前对于css中的position的理解 ...

  10. TCP/IP详解 卷一(第二十章 TCP的成块数据流)

    本章将介绍TCP所使用的被称为滑动窗口协议的一种流量控制方法. 该协议允许发送方在停止并等待确认前可以连续发送多个分组,这样就可以加速数据的传输. 滑动窗口 下图用可视化的方法显示了滑动窗口协议 我们 ...