SpringBoot
Spring和SpringBoot
Spring缺点:配置过于繁琐/引入依赖过多,版本控制复杂
SpringBoot优点:基于约定大于配置的思想,简化Spring的开发/配置简单/依赖引入简单/提供了一些大型项目的非功能特性,如嵌入式服务器,安全指标,健康监测等
springboot
Spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP(面向切面)为思想内核,极大简化了JAVA企业级项目的开发
官网
阿里网址
项目版本
SNAPSHOT: 快照版(表示开发版本,随时可能修改)
M1(Mn): 里程碑版本(milestone)
RC1(RCn): 发布预览版(release candidates)
Release: 正式版(没有任何后缀也可能表示正式版)
打包类型
开发的是web项目,但由于嵌入了Tomcat等Web容器,不需部署War文件,只需要打成Jar包即可
核心功能
自动配置(自动提供最优配置,同时可以修改默认值满足特定的要求)
起步依赖(依赖是基于功能,将完成一个功能所需要的所有坐标打包到一起,并完成了版本适配)
POM文件
父工程:会继承所配置的版本的父项目
起步依赖:以功能为单位,而不是以jar包为单位
插件:用于将项目打包成jar包,该插件打包的SpringBoot项目无需依赖web容器,可直接使用JDK运行
启动类
作用:启动SpringBoot项目(Springboot不依赖外部tomcat,自带tomcat)
启动类在启动时会做注解扫描(@Controller、@Service、@Repository......),扫描位置为同包或者子包下的注解,所以我们要在启动类同级或同级包下编写代码
配置文件
只有一个 application.properties配置文件,该文件不写任何信息都可以启动项目
Spring的自动配置功能使得大部分的配置都有默认配置,该文件的功能是覆盖默认配置信息
核心注解
@SpringBootApplication
标注是SpringBoot的启动类。
此注解等同于@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan。
@SpringBootConfiguration
@SpringBootConfiguration是@Configuration的派生注解,跟@Configuration功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration是Springboot的注解,而@Configuration是Spring的注解
@EnableAutoConfiguration
SpringBoot自动配置注解。
等同于@AutoConfigurationPackage+@Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage
自动扫描包的注解,它会自动扫描主类所在包下所有加了注解的类(@Controller,@Service等),以及配置类(@Configuration)。
@Import({AutoConfigurationImportSelector.class})
该注解会导入AutoConfifigurationImportSelector类对象,该对象会从META-INF/spring.factories文件中读取配置类的名称列表。
@ComponentScan
该注解会扫描项目,自动装配一些项目启动需要的Bean
手动搭建springboot项目
创建maven项目
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/>
</parent>
<groupId>org.example</groupId>
<artifactId>springbootdemo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--springMVC-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
application.yml
# 端口号
server:
port: 8080
主启动类
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class,args);
}
}