SpringBoot是一款由Pivotal团队提供的框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过自动配置和约定优于配置的思想,允许开发者快速创建独立的、生产级别的Web应用。本文将详细介绍如何使用SpringBoot搭建第一个Web应用,并探讨其核心特性和适用场景。
SpringBoot简介SpringBoot是由Pivotal团队提供的框架,其目标是简化新Spring应用的初始搭建以及开发过程。SpringBoot提供了一种基于约定优于配置的思想,能够快速创建独立的、生产级别的基于Spring的应用程序。开发者只需关注业务逻辑,无需配置大量的XML或Java配置。
java -version
,应该会显示你安装的Java版本信息。mvn -v
或gradle -v
,应该会显示构建工具的版本信息。~/.m2/settings.xml
中配置国内的镜像地址,以便快速下载SpringBoot依赖:
<settings> <mirrors> <mirror> <id>aliyun</id> <name>Aliyun Maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>
mvn archetype:generate -DgroupId=com.example -DartifactId=springbootdemo -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
pom.xml
中添加SpringBoot的依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.7.3</version> </dependency> </dependencies>
SpringBoot的自动配置是基于约定优于配置的原则,通过分析应用程序的类路径来自动配置应用。SpringBoot会查找类路径中的相关类,并通过一定的规则进行配置,以减少开发者手动配置的代码量。
例如,如果项目中包含org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
类,SpringBoot会自动配置Spring MVC相关的组件。
SpringBoot Starter是一种依赖管理工具,用于简化项目的构建配置。它将一组常用的依赖组合在一起,方便使用。例如,spring-boot-starter-web
包含了创建Web应用所需的全部依赖。
直接在pom.xml
中引入spring-boot-starter-web
,就可以省去手动添加所有相关的依赖,如spring-webmvc
、spring-web
等。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
SpringBoot使用了若干注解来简化开发,下面是一些常用的注解:
@SpringBootApplication
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
三个注解。@Configuration
@EnableAutoConfiguration
@ComponentScan
@RestController
@RequestMapping
@GetMapping
@PostMapping
@Service
@Repository
如上所述,要创建一个简单的Web应用,首先需要在pom.xml
中引入spring-boot-starter-web
依赖。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
控制器是处理HTTP请求的类,通常包含多个处理请求的方法。下面是一个简单的控制器示例:
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String sayHello() { return "Hello, Spring Boot!"; } }
创建一个主类,使用@SpringBootApplication
注解标记该类,并添加main
方法启动应用:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
运行DemoApplication
类中的main
方法,启动应用后,访问http://localhost:8080/hello
,会看到返回“Hello, Spring Boot!”。
application.properties
是SpringBoot默认的配置文件,用于存放一些基本的配置信息。例如,设置应用的端口号,日志级别等。
# 端口号 server.port=8081 # 日志级别 logging.level.root=INFO # 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root
application.yml
是另一种配置文件,使用YAML语法,相比properties
文件更简洁。
server: port: 8082 logging: level: root: INFO spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: root
可以在代码中使用@Value
注解注入配置文件中的属性值。
import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class ConfigReader { @Value("${server.port}") int port; @Value("${spring.datasource.url}") String url; public String getPortAndUrl() { return "Port: " + port + ", URL: " + url; } }
在控制器中调用ConfigReader
对象,获取并返回配置信息:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ConfigController { @Autowired private ConfigReader configReader; @GetMapping("/config") public String getConfig() { return configReader.getPortAndUrl(); } }
访问http://localhost:8081/config
,会返回配置的端口号和数据源URL。
在IDEA或其他编译工具中,运行mvn package
命令,将项目打包为一个可执行的JAR文件。
mvn clean package
springbootdemo.jar
到tomcat/webapps
目录。http://localhost:8080/springbootdemo/hello
,会看到返回“Hello, Spring Boot!”。FROM openjdk:8-jre-alpine VOLUME /tmp COPY target/springbootdemo.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
docker build -t springbootdemo .
docker run -d -p 8080:8080 springbootdemo
http://localhost:8080/hello
,会看到返回“Hello, Spring Boot!”。通过以上步骤,你已经成功搭建了一个简单的SpringBoot Web应用,并对其进行打包部署,无论是传统的Tomcat服务器还是现代的Docker容器,都可以轻松部署和运行你的应用。