Spring boot 入门2-注解浅析

hello world探究

1.pom文件

1.1导入父项目

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

1.2导入父项目有什么用?

按住ctrl+点击<artifactId>spring-boot-starter-parent</artifactId>可发现

它还依赖于另一个父项目,

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-dependencies</artifactId>
   <version>1.5.9.RELEASE</version>
   <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

按住ctrl+点击 <artifactId>spring-boot-dependencies</artifactId>

它定义了我们每一个依赖的工具的版本号,

Spring Boot的版本仲裁中心;

所以以后的导入依赖是不用再定义版本号的,有的版本已经在父的父文件中定义清楚

再者为避免自己导入的版本与spring boot的其他工具出现不兼容情况。不要自己添加版本号,以免画蛇添足

 

但是有些是没有预定义的工具,需要开发者自己声明版本号

1.3导入的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

spring-boot-starter-web

我们可以发现一个规律,spring-boot-starter在多个位置出现

spring-boot-starter:spring boot场景启动器

按住ctrl+点击<artifactId>spring-boot-starter-web</artifactId>

看文件描述;他说,作为web项目,他包含了RESTful,SpringMVC,使用tomcat作为默认的web服务容器。

再看依赖,果真为我们继续导入了,tomcat相关依赖配置,以及springMVC的一些核心。

 

spring将所有的场景做了抽取,做成了一个个的starts(启动器),我们在主POM文件中只需要确定好场景,相关依赖自动导入。

1.4启动器

https://docs.spring.io/spring-boot/docs/1.5.19.RELEASE/reference/htmlsingle/#using-boot-starter

查看这里看看有多少应用场景,根据不同的场景确定使用的场景启动器

2.主程序类,主入口类

@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        //springbooot跑起来
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

@SpringBootApplication注解

这个标记标在那个类上,说明哪个类是springboot的主配置类

springboot就应该运行这个类的main方法来启动SpringBoot应用

按ctrl+@SpringBootApplication

可以看到这是一个组合注解

@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}
)}
)

有上面多个注解组成

@SpringBootConfiguration:字面意思,SpringBoot配置类,

再递进一层可以发现有个@Configuration注解

 

2.1啥叫配置类?

这个文章讲的比较详细,我这里大体说一下,读者可看一下这篇文章

https://www.cnblogs.com/duanxz/p/7493276.html

 

配置类可以代替之前的配置文件的作用

@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)

 

 

如果你足够执着,你会发现@Configuration下竟然还有@Component这个注解

说白了。其实一个配置类就是一个“组件”

@component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>)

  •  

2.2@EnableAutoConfiguration

开启自动配置功能

以前我们需要配置的东西,现在不需要动手配置了,springboot自动帮我们进行配置

SpringBoot开启自动配置功能,这样自动配置才能生效

@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage自动配置包

@Import({Registrar.class})

@import注解是spring的底层注解,给容器中导入一个组件;导入的组件由{Registrar.class}指定

将主配置类(@SpringBootApplication标记的类)的所在包及下面的所有的子包里面的所有组件都扫描到spring容器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值