SpringBoot核心注解介绍

我们看一下SpringBoot核心注解的一个介绍,其实我们之前在SpringBoot当中呢,我们用过这些注解了,

只是我们没有去说一下每个注解的详细含义,那么我们在这里把它补齐,我们打开我们的代码,我们看哪个呢,

启动类开始,我们看一下启动类这里,加一个@SpringBootApplication的注解,我们先把他加进来,到底是干嘛用的,

其实就是标记为你当时在哪个类上加了注解了,表示当前类是SpringBoot的一个启动类,代表的是SpringBoot的启动类,

那么启动类在启动的过程当中,要做很多事,那他在启动当中要做什么事呢,我们再看,我们打开这个注解,我们点开,看看

他的源码,在这个注解当中呢

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

他又被这么多注解所修饰,所定义,换句话说,我这里所修饰的注解,都具备这个特点的,注解Annotation的一个特点,

那么在SpringBootApplication注解上,有这么多注解,一个是@SpringBootConfiguration,

还有一个是@EnableAutoConfiguration,还有一个@ComponentScan,这三个是我们所关心的,先来看一下

@SpringBootConfiguration,这个注解是干嘛用的,我们点开他看一下,

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

在这个注解当中呢,它是一个空的,什么都没有,但是关键是,他被另一个注解所定义了,就是这个@Configuration,

这个注解是非常重要的,其实SpringBootConfiguration,具备了@Configuration的能力了,那么这个注解是非常重要的一个

注解,其实我们就可以注意一下,SpringBootConfiguration的作用就是,通过ben对象来获取配置信息,之所以他具备这个能力,

是因为他被@Configuration修饰了,这个注解是什么呢,通过bean对象完成或者获取配置信息的能力其实是@Configuration的,

这个大家对他并不陌生,它是在Spring3.0以后的一个注解,这个注解最大的特点是,来代替我们的XML配置文件,通过对bean对象

的操作,替代spring中的xml文件,所以我们在讲SpringBoot的时候,我们也用过这个注解@SpringBootConfiguration,

然后你哪个类加上了@SpringBootConfiguration了,都会对这个类的内容做一个触发,我们当时使用@Configuration和@Bean注解,

大家应该有印象,所以这个注解是非常重要的,所以正因为有这个注解的存在,我们的配置文件当中,

就没有了xml文件,@Configuration一个介绍,这样我们就把SpringBootConfiguration讲完了,

我们再来看@EnableAutoConfiguration,这个注解干嘛用的呢,我们点开他的源码看一下

@SuppressWarnings("deprecation")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

在这里他有一个@AutoConfigurationPackage,然后里面还有其他的,我就不往下看了,这里直接解释一下注解的作用,这个注解的

作用其实就是根据当前项目所导入的jar包,我们的项目当中是一个maven项目,导入了一些jar包,它会根据我们所导入的jar包,

创建我们项目的启动环境,举个例子,我们这里不是导入了一个WEB启动器吗,我们都知道boot中的WEB启动器,包含了MVC信息的,

但是我们现在并没有对MVC配置的配置文件,包括组件扫描,还有web.xml里面配置dispatcherServlet,这些我们都没有,那么都没有

这些信息怎么去配置的呢,其实就是通过EnableAutoConfiguration来完成的,在这里会根据我们的需要,根据我们的jar包结构,

来对我们的WEB环境做一个初始化的,所以这个EnableAutoConfiguration的作用呢,就是帮我们初始化一个WEB环境,完成一些初始化

环境的配置,这个是EnableAutoConfiguration的作用,我们再打开看,这个@ComponentScan

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {

这个注解的作用干嘛的呢,不用在往上看了,我们说一下这个注解的作用,其实这个注解就比较简单了,就是完成Spring的组件扫描,

他来替代什么呢,替代我们之前在XML文件中,配置组件扫描的配置,还记得那个配置吗,我们需要用到一个context命名空间下的,

然后有一个component-scan,然后package等于一个包名,然后他会根据包来做组件的扫描,那么这一个配置呢,

<context:component-scan base-package="" />

所以也就有他这样一个注解的存在,所以我们也不需要配置文件了,也不需要在配置文件里去配他了,所以这些注解就构成了

我们SpringBoot在启动时一些核心配置的支持,所以我们的SpringBoot你会发现SpringBoot项目当中,Spring配置文件

一个都不用了,原因就是这些注解的一个作用,才能出现这个效果,这是根配置相关的一些注解,我们通过名字也能看到

他的一些含义,在这里我们再来介绍一个注解,比如说这个Controller,我们用到了一个@RestController的注解,

我们点开他来看一看,其实你会发现这个注解是非常简单的,它是被两个注解所定义

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

一个是@Controller,一个是@ResponseBody,Controller不用说了,我们用过SpringMVC的都知道,表示的是一个处理单元,

处理器或者是控制器,然后@ResponseBody呢,表示你当前的返回都是以一个JSON的格式,来做一个响应,所以把这两个注解都

耦合到RestController里,如果你的Controller被RestController所修饰,首先你这个类是Controller,然后下面所有的方法

都会以JSON的数据返回,就是我们这里为什么加了RestController,就是我们方法不用加ResponseBody的一个原因,所以原因就是

在这,他的这两个注解里包含了这两个注解,他有两个特点,第一个表示是一个Controller,表示当前的这个Controller下所有的方法

都会以JSON的格式响应,所以这个注解理解起来也是比较简单的,那么我们目前涉及的一些核心注解呢,就是这一块,其实最关键的

就是启动类里的注解,可以花点时间看一看,也不是什么太难的事,其实我们主要是对之前的SpringBoot做一个补充,看一看源代码,

相信大家自己也可以通过源代码看出里面的特点

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值