深入学习Springboot的注解@SpringBootApplication

简介: 深入学习Springboot的注解@SpringBootApplication

1.JAVA基础面试常考问题: JAVA面试基础常考题汇集
2.JAVA面试SSM框架常考:JAVA框架面试题汇集


@[toc]


一、初识注解

最近在哔哩哔哩上面看Java面试会经常看到:说一说你对@SpringBootApplication这个注解的理解?
在这里插入图片描述

接下来带大家一起学习了解一下这个注解


@SpringBootApplication是一个组合注解,用于快捷配置启动类。

@SpringBootApplication包含的三个注解及其含义:

  • @Configuration: 用于定义一个配置类
  • @EnableAutoConfiguration :Spring Boot会自动根据你jar包的依赖来自动配置项目。
  • @ComponentScan: 告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。

自动配置、组件扫描,并能够在他们的“应用程序类”上定义额外的配置,可以使用一个@SpringBootApplication注解来启用这三个特性。


二、源码学习

点击打开@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}
)}
)
public @interface SpringBootApplication {
    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    Class<?>[] exclude() default {};

    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    String[] excludeName() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class<?>[] scanBasePackageClasses() default {};

    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

1、@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

2、@EnableAutoConfiguration:是spring boot的核心功能,自动配置。这个注释告诉SpringBoot“猜”你将如何想配置Spring,基于你已经添加jar依赖项。如果spring-boot-starter-web已经添加Tomcat和Spring MVC,这个注释自动将假设您正在开发一个web应用程序并添加相应的spring设置.

通常推荐将 @EnableAutoConfiguration 配置在 root 包下,这样所有的子包、类都可以被查找到。

3、@ComponentScan : 通俗的讲,@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解 的类,并注册成bean,当然包括 @Component 下的子注解@Service、@Repository、@Controller。@ComponentScan 注解没有类似 、的属性


SpringBootApplication继承了以上三个注解,可以简化开发,是开发着注重业务。

如在之前扫描注解时,有spring ,springmvc 两个扫描,导致有两个bean容器,容易出现错误,现在他们都交给了springboot,容器就只有一个,冲突就不会出现了。


三、Springboot的启动方式

偶尔面试官也会考到为有几种启动Springboot项目的方式 其实有一些 最主要是三种

spring-boot的启动方式主要有三种:

1. 运行带有main方法类

2. 通过命令行 java -jar 的方式

3. 通过spring-boot-plugin的方式


1. 最简单的方法是运行带有main方法类

在这里插入图片描述
然后我们访问一下测试
在这里插入图片描述


2.通过java -jar的方式

使用mvn install先编译,在使用java -jar xxxxxxxxxx.jar启动

在项目当前目录进行编译,然后 进入target目录下,使用java命令启动


3.使用mvn spring-boot:run命令启动

首先我们的项目中有如下的插件

在这里插入图片描述
进入项目当前目录,然后使用命令
在这里插入图片描述
然后项目就启动了。


4.打包war包,丢到tomcat启动

5.使用docker容器等等....

未完待续


[video(video-jCGRnL9S-1592103339357)(type-edu_course)(url-https://edu.csdn.net/course/blogPlay?goods_id=16951&blog_creator=weixin_45393094&marketing_id=110)(image-https://img-bss.csdnimg.cn/2019121815233673.jpg)(title-Java面试Offer直通车)]


The best investment is to invest in yourself

目录
相关文章
|
3月前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
65 0
|
2天前
|
缓存 Java 数据库
SpringBoot缓存注解使用
Spring Boot 提供了一套方便的缓存注解,用于简化缓存管理。通过 `@Cacheable`、`@CachePut`、`@CacheEvict` 和 `@Caching` 等注解,开发者可以轻松地实现方法级别的缓存操作,从而提升应用的性能和响应速度。合理使用这些注解可以大大减少数据库的访问频率,优化系统性能。
121 85
|
2月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
175 73
|
2月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
54 21
|
2月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
2月前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
3月前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
139 4
SpringBoot必须掌握的常用注解!
|
3月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
59 4
|
3月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
201 2
|
3月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
78 2