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所扫描的包。 

    此博客只是为了记忆相关知识点,大部分为网络上的文章,在此向各个文章的作者表示感谢!
  • 相关阅读:
    桟错误分析方法
    gstreamer调试命令
    sqlite的事务和锁,很透彻的讲解 【转】
    严重: Exception starting filter struts2 java.lang.NullPointerException (转载)
    eclipse 快捷键
    POJ 1099 Square Ice
    HDU 1013 Digital Roots
    HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
    HDU 1159 Common Subsequence
    HDU 1069 Monkey and Banana(动态规划)
  • 原文地址:https://www.cnblogs.com/mark5/p/10912878.html
Copyright © 2011-2022 走看看