zoukankan      html  css  js  c++  java
  • 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所扫描的包。 

    此博客只是为了记忆相关知识点,大部分为网络上的文章,在此向各个文章的作者表示感谢!
  • 相关阅读:
    flask-离线脚本、with在上下文的应用
    websocket原理及实时投票
    微信消息的推送
    Django + Uwsgi + Nginx 的生产环境部署2
    UVA 11853 Paintball
    UVA 12171 Sculpture
    UVA 10305 Ordering Tasks
    UVA 816 Abbott's Revenge
    UVA 699 The Falling Leaves
    UVA 12657 Boxes in a Line
  • 原文地址:https://www.cnblogs.com/mark5/p/10912878.html
Copyright © 2011-2022 走看看