SpringBoot的启动

一、开发SpringBoot项目通常是这样:

  • 引入依赖
  • 添加注解
  • 书写配置文件

springboot两个核心思想起步依赖和自动配置。就像官网说的:

使用Spring Boot可以轻松地创建独立的,基于生产级别的基于Spring的应用程序,您可以“运行”它们。

二、我们新建一个SpringBoot项目,从上面我们知道大概是是三个地方:pom.xml 和 xxxApplication启动程序,application.properties

(1) spring-boot-starter-parent:https://segmentfault.com/a/1190000018854658

当我们创建一个 Spring Boot 工程时,可以继承自一个 spring-boot-starter-parent ,也可以不继承自它,我们先来看第一种情况。先来看 parent 的基本功能有哪些?

1、定义了 Java 编译版本为 1.8 。

2、使用 UTF-8 格式编码。

3、继承自 spring-boot-dependencies,里边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。

4、执行打包操作的配置。

5、自动化的资源过滤。

6、自动化的插件配置。

7、针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。

请注意,由于application.properties和application.yml文件接受Spring样式占位符 $ {...} ,因此 Maven 过滤更改为使用 @ .. @ 占位符,当然开发者可以通过设置名为 resource.delimiter 的Maven 属性来覆盖 @ .. @ 占位符。

有的时候,公司里边会有自己定义的 parent ,我们的 Spring Boot 项目要继承自公司内部的 parent ,一个简单的办法就是我们自行定义 dependencyManagement 节点,然后在里边定义好版本号,再接下来在引用依赖时也就不用写版本号了。

2、自动配置

@SpringBootApplication
public class SpringbootstartApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootstartApplication.class, args);
	}

}

'''

@SpringBootApplication 点进去:主要就这三个注解,其他的是声明注解不用管

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

1、@SpringBootConfiguration 等于@Configuration注解,即让SpringBoot启动的时候能找到我们自定义的配置Bean

2、 @ComponentScan : 看字面意思可以理解为扫描加了@Conponent注解的类,平时我们大多使用@Controller,@Service

如果我们偷懒的话,也可以直接写@Conponent,因为他们也是基于@Conponent实现的

3、@EnableAutoConfiguration :加载SpringBoot启动时的第三方类,例如Tomcat/redis...

@EnableAutoConfiguration --> @Import(EnableAutoConfigurationImportSelector.class) -->
AutoConfigurationImportSelector,

这些类的全类名在spring.factories文件中。那么这些类放在哪里呢?就在spring-boot-autoconfiguration.jar下面:

2、为什么在application.properties中可以配置我们数据库或Tomcat...信息?

(1)SpringBoot为我们内嵌了很多类,如Tomcat/redis...要怎么加载

        Spring Framework内部使用一种工厂加载机制(Factory Loading Mechanism)。这种机制使用SpringFactoriesLoader完成,SpringFactoriesLoader使用loadFactories方法加载并实例化从META-INF目录里的spring.factories文件出来的工厂,这些spring.factories文件都是从classpath里的jar包里找出来的。

        这个属性配置文件就指明了springboot工程启动的时候需要做哪些自动配置:

        

spring.factories文件是以Java的Properties格式存在,key是接口或抽象类的全名、value是以逗号 " , " 分隔的实现类,举例自动化配置信息:这里都是类的全限定名,那么这些类放在哪里呢?就在spring-boot-autoconfiguration.jar下面:

所以我们可以根据类名修改配置。

三、SpringBoot的启动:https://www.cnblogs.com/trgl/p/7353782.html

      每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序,该方法所在类需要使用@SpringBootApplication注解,以及@ImportResource注解(if need),@SpringBootApplication包括三个注解,功能如下:@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置

@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境

@ComponentScan:组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下

      有一点需要记住,SpringBoot是基于SpringFramework的,所以启动时肯定是先初始化IOC容器。

      启动主要创建了配置环境(environment)、事件监听(listeners)、应用上下文(applicationContext),并基于以上条件,在容器中开始实例化我们需要的Bean,至此,通过SpringBoot启动的程序已经构造完成。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值