方式一:通过官网
在官网做好项目设置(设置不同,最后生成的pom.xml、包目录就不同),就会生成一个SB项目的压缩包
启动类就是带main()的类
PS:容器默认的扫描包目录是从启动类所在包目录开始
@SpringBootApplication = @EnableAutoConfiguration(new自动配置类)+ @ComponentScan
也就是从划线处开始,如果在包外面用@Component注册组件是不会生效的
可以在启动类上面用@ComponentScan指定扫描包目录
@SpringBootApplication
@ComponentScan(basePackages = "com.service")
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
怎么检测组件是否注册成功:
1、在注册类的构造方法里打印输入一行文字,看启动程序后会不会打印
PS:如果注册成功,在启动程序后会调用构造方法,注册组件放入Spring容器中
2、看target目录下有没有被注册类的字节码文件
因为要实现web项目,先引入SpringWeb依赖,通常引入依赖都是带starter的(带starter一般会把一个框架所需的全部依赖引入),如果项目不需要接收http请求(不用tomcat)就不用导入web依赖
项目信息描述的group和artifact就是maven项目的
<groupId>com</groupId>
<artifactId>provider</artifactId>
name就是maven项目这里显示的名字
选好配置后点generate,生成SB项目压缩包
压缩包结构如下
一个SB项目一般只用保留src目录和pom.xml,其它都可以删除
方式二:通过IDEA
和方式一类似
点击next
选中依赖后就会出现在右边 ,next
这是在IDEA建项目的常规操作 ,finish
这些选项和官网的一样,其实就是在IDEA里选好配置,IDEA再去spring官网帮我们重复方式一的步骤,再把压缩包下载下来,解压、呈现给我们看
建完项目,发现和从官网下载的一模一样
PS:每次新建项目,别忘设置这里
SpringBoot的项目简单介绍
1、pom.xml
SB项目的特点是一定有一个父工程,这样在子工程没有声明依赖的version默认会延用父工程的版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
ctrl+左键点击artifactId的parent,会进入parent的pom.xml
再按dependencies,能看到SB的默认版本信息
2、SpringBoot自动配置相关内容
通常在SB引入一个框架,通常都会带autoconfigure依赖(如果那个框架有自动配置类就会有autoconfigure依赖),它是支持默认注册组件关键
SpringBoot是通过自动配置类帮我们做的默认组件的注册
在autoconfigure包下 → /META-INF/spring.factories → AutoConfiguration=List<String>自动配置类的列表
/META-INF/xxx-autoconfigure.json → 可以看自动配置文件中的值如何配置(name、描述、值的类型、来源、默认值)
自动配置生效是有条件的,用以下注解实现
@ConditionalOnXXX → 在满足XXX的条件下生效
@ConditionalOnMissingXXX → 在没有XXX的条件下生效
3、SB项目运行后的加载过程
从运行启动类开始,上面有个注解
进入@SpringBootApplication注解里面,上面有个允许自动配置的注解
点击进入注解,看到还有个注解,是个选择器,它是去选择自动配置类的字节码文件
点击字节码文件,里面有个selectImports()方法,返回值就是所有自动配置类的全类名
接着点击进到方法里面
这是真正加载全类名的方法,因为可能加载到重复的全类名,所以下面在做去重、排错
这个是加载全类名方法内部的方法
返回值是Map<String,List<String>>,说明加载的就是下面的配置文件
补充
1、在sb的配置文件输入key-value时,系统自带的配置会有提示,而我自己写的key-value没有
可以通过以下方法让自己写的key也有提示(但是经常会失效)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
导包
或者在创建SB项目就配置好
配置好后,重启IDEA,点击run程序
banner
修改启动SB项目时控制台显示的图像
1、先在网上找一个banner
https://www.cnblogs.com/yanyangxue2016/p/8963047.html
2、在src\main\resources下新建banner.txt的文件(现在可以用banner.png)
把网上找到banner复制粘贴进去
重启后就能看到图像