在上一章《00.创建多模块项目》中,笔者汪小成已经创建了一个空的01.spring-boot-hello
子工程。本章中笔者汪小成开始着手编写一个简单地Spring Boot项目主启动类。
本篇文章主要内容:
- 手动创建一个简单的Spring Boot项目
- 简单地介绍下Spring Boot项目目录结构
- @SpringBootApplication注解介绍说明
创建Spring Boot项目
1、在pom.xml
文件中添加依赖;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
因为笔者汪小成已经在父项目中使用spring-boot-dependencies
引入Spring Boot 相关Maven依赖,所以这里不需要再为spring-boot-starter
指定版本号。
2、在/src/main/java
上单击鼠标右键New
--> Package
,输入包名:cn.ddcherry.springboot.demo
;
3、在cn.ddcherry.springboot.demo
包上单击鼠标右键New
--> Java Class
,输入类名:App
。
App.java
类的具体代码如下:
package cn.ddcherry.springboot.demo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import java.net.InetAddress;
import java.util.Arrays;
@Slf4j
@SpringBootApplication
public class App {
public static void main(String[] args) throws Exception {
// 获取本机IP地址
String ip = InetAddress.getLocalHost().getHostAddress();
log.info(本机ip: {}, ip);
ApplicationContext context = SpringApplication.run(App.class);
System.out.println(Bean个数: + context.getBeanDefinitionCount());
String[] beanNames = context.getBeanDefinitionNames();
Arrays.sort(beanNames);
System.out.println(########## Bean列表 ##########);
Arrays.asList(beanNames).forEach(System.out::println);
}
}
输出结果:
本机ip: 192.168.3.102
Bean个数: 44
########## Bean列表 ##########
app
applicationAvailability
applicationTaskExecutor
forceAutoProxyCreatorToUseClassProxying
lifecycleProcessor
mbeanExporter
mbeanServer
objectNamingStrategy
org.springframework.aop.config.internalAutoProxyCreator
org.springframework.boot.autoconfigure.AutoConfigurationPackages
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration
org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration
org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration
org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration
org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
org.springframework.boot.context.internalConfigurationPropertiesBinder
org.springframework.boot.context.internalConfigurationPropertiesBinderFactory
org.springframework.boot.context.properties.BoundConfigurationProperties
org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor
org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter
org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.event.internalEventListenerFactory
org.springframework.context.event.internalEventListenerProcessor
propertySourcesPlaceholderConfigurer
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
spring.jmx-org.springframework.boot.autoconfigure.jmx.JmxProperties
spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties
spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties
spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties
spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties
springApplicationAdminRegistrar
taskExecutorBuilder
taskSchedulerBuilder
Process finished with exit code 0
说明:
App.java
只是一个用于演示的非常简单的Spring Boot项目主启动类。主要功能:
- 获取本机IP地址;
- 从
ApplicationContext
中获取Bean的数量、名称,在控制台打印;
文件目录介绍
/src/main/java
:放置所有的Java文件;/src/main/resources
:放置所有的资源文件,包括静态资源文件、配置文件、页面文件等;/src/test/java
:放置单元测试类相关的Java文件;/src/main/resources/static
:放置静态资源文件,如HTML、CSS、JS、图片;/src/main/resources/application.properties
:Spring Boot项目配置文件。/src/main/resources/templates
:放置模板文件,如Thymeleaf、Freemarker、Velocity;
@SpringBootApplication注解
@SpringBootApplication
注解是一个组合注解,由如下3个注解组合而成:
@SpringBootConfiguration
:该注解的作用与@Configuration
注解的作用完全相同,可以说是@Configuration
注解的别名。使用该注解修饰的类将作为Java配置类。@EnableAutoConfiguration
:该注解用于启用Spring Boot的自动配置功能。@ComponentScan
:该注解用于指定自动扫描的基础包名,Spring容器会自动扫描包及其子包下符合条件的Bean,然后将这些Bean加载到Spring容器中。
Spring Boot系列文章
- Spring Boot | 手动创建多模块项目
- Spring Boot | 整合Swagger、Knife4j自动生成API文档