为了账号安全,请及时绑定邮箱和手机立即绑定

创建springboot项目项目实战:新手入门教程

标签:
SpringBoot
概述

本文详细介绍了如何创建和初始化Spring Boot项目,涵盖了使用Spring Initializr在线工具和IDE创建项目的方法,提供了详细的代码示例和配置说明。文章还深入讲解了创建第一个Spring Boot应用的实战操作,包括添加依赖、编写Hello World程序以及项目配置。文中全面阐述了创建Spring Boot项目的每一个关键步骤。

引入Spring Boot

Spring Boot简介

Spring Boot 是一个由Spring团队设计的新型框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过约定优于配置的方式,帮助开发者快速搭建独立的、基于生产级别的Spring应用。Spring Boot 不是对Spring框架的替代,而是简化了使用Spring应用的初始配置。

Spring Boot的优势和应用场景

Spring Boot的优势主要体现在以下几个方面:

  1. 快速启动:通过大量的默认配置,Spring Boot 可以使开发人员快速启动和运行应用,无需手动配置大量的XML文件。
  2. 自动化配置:Spring Boot 可以自动配置大多数Spring应用常见场景,大大减少了开发人员的配置工作量。
  3. 嵌入式容器支持:Spring Boot 可以内嵌Tomcat、Jetty或Undertow等Servlet容器,开发者可以直接部署应用,省去了配置传统Servlet容器的步骤。
  4. 依赖管理和版本控制:Spring Boot 提供了自动依赖管理和版本控制,确保项目依赖的一致性。依赖管理可以避免版本冲突问题,简化了项目的构建过程。
  5. 生产就绪特性:Spring Boot 提供了许多生产级别的特性,如健康检查、监控、外部化配置等,使应用在生产环境中更加稳定。

Spring Boot适用于以下场景:

  • 快速原型开发阶段,可以快速搭建原型应用。
  • 中小型项目开发,特别是那些不需要额外复杂配置的项目。
  • 持续集成和持续部署的持续交付流水线,易于自动化测试和部署。
  • 微服务架构中的服务开发,可以快速部署和启动。

如何选择合适的Spring Boot版本

选择合适的Spring Boot版本需要考虑以下几个因素:

  • 兼容性:通常选择最新稳定版本可以兼容更多的新特性和依赖库,但也要考虑与现有项目和框架的兼容性。
  • 安全性:使用最新的稳定版本可以确保获得最新的安全补丁和修复。
  • 长期支持(LTS)版本:对于需要长期支持的项目,可以选择Spring Boot LTS版本,这些版本提供更长时间的支持和技术支持。
  • 社区活跃度:选择社区活跃度较高的版本,可以获得更多的帮助和资源。
  • 兼容性与更新:选择与项目中其他依赖库兼容的版本,并检查是否存在重要的更新和补丁。

选择Spring Boot版本时,可以通过Spring Boot的官方网站和Spring Boot版本发布页面查看最新的版本信息和版本兼容性矩阵,以确保所选版本满足项目需求。

初始化Spring Boot项目

使用Spring Initializr在线工具创建项目

Spring Initializr 是一个在线工具,可以帮助我们快速创建Spring Boot项目。以下是使用Spring Initializr创建项目的基本步骤:

  1. 访问Spring Initializr官网:https://start.spring.io/
  2. 在页面中,选择项目基本信息,例如项目名、语言、打包方式(Jar或War)、依赖等。
  3. 选择依赖模块,例如Spring Web、Spring Data JPA等。
  4. 点击“Generate”按钮,下载压缩包。
  5. 解压压缩包,使用IDE导入项目。

示例代码:

# src/main/resources/application.properties
spring.application.name=myapp
server.port=8080

使用IDEA或STS等IDE快速搭建项目环境

使用IDEA或STS等IDE可以更方便地创建和管理Spring Boot项目。以下是使用IDEA创建Spring Boot项目的步骤:

  1. 打开IDEA,选择“File” -> “New” -> “Project”。
  2. 在模板列表中选择“Spring Initializr”。
  3. 输入项目基本信息,例如项目名、语言、打包方式等。
  4. 选择Spring Boot版本。
  5. 选择项目依赖,例如Spring Web、Spring Data JPA等。
  6. 点击“Finish”按钮,创建项目。

示例代码:

<!-- src/main/resources/pom.xml -->
<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>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

项目结构解析

Spring Boot项目结构通常包括以下部分:

  • src/main/java:存放Java源代码,包括主程序类和各种服务类。
  • src/main/resources:存放静态资源文件、配置文件等。
    • src/main/resources/application.properties:存放Spring Boot的配置信息。
    • src/main/resources/application.yml:另一种配置文件格式。
    • src/main/resources/static:存放静态资源文件,例如HTML、CSS、JavaScript等。
    • src/main/resources/templates:存放Thymeleaf模板文件,用于构建视图。
    • src/main/resources/logback-spring.xml:日志配置文件。
  • src/test/java:存放测试代码。

示例代码:

// src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;

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);
    }
}
实战操作入门

创建第一个Spring Boot应用

创建一个简单的Spring Boot应用,可以分为以下几个步骤:

  1. 创建一个Maven项目,或使用Spring Initializr创建。
  2. 创建主程序类。
  3. 编写一个简单的Controller,提供一个RESTful接口。
  4. 运行应用并测试接口。

示例代码:

// src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;

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);
    }
}
// src/main/java/com/example/demo/controller/HelloController.java
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

添加并配置Spring Boot依赖

pom.xml文件中添加所需的依赖。以下是一个示例pom.xml文件,其中添加了Spring Boot Web依赖:

示例代码:

<!-- src/main/resources/pom.xml -->
<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>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

编写简单的Hello World程序

创建一个简单的Controller类,提供一个RESTful接口,返回"Hello, World!"。

示例代码:

// src/main/java/com/example/demo/controller/HelloController.java
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
实战配置详解

配置application.properties和application.yml文件

Spring Boot使用外部配置文件来存放应用的配置信息。常用的配置文件有application.propertiesapplication.yml

示例代码:

# src/main/resources/application.properties
spring.application.name=myapp
server.port=8080
# src/main/resources/application.yml
spring:
  application:
    name: myapp
server:
  port: 8080

配置数据源连接

配置数据源连接通常包括数据库驱动、连接URL、用户名和密码等信息。在application.propertiesapplication.yml中添加数据库相关配置。

示例代码:

# src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# src/main/resources/application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

配置日志和安全设置

配置日志可以使用logback-spring.xml文件,配置安全设置可以使用application.ymlapplication.properties中的安全相关配置。

示例代码:

<!-- src/main/resources/config/logback-spring.xml -->
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
# src/main/resources/application.yml
spring:
  security:
    basic:
      enabled: true
    user:
      name: admin
      password: admin
接口开发实战

创建RESTful接口

使用Spring MVC注解(如@RestController@GetMapping等)来创建RESTful接口。

示例代码:

// src/main/java/com/example/demo/controller/HelloController.java
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

使用Spring Boot进行单元测试

使用Spring Boot的@SpringBootTest注解来编写单元测试。

示例代码:

// src/test/java/com/example/demo/DemoApplicationTests.java
package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest
public class DemoApplicationTests {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void contextLoads() throws Exception {
        mockMvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string("Hello, World!"));
    }
}

接口安全控制与拦截器使用

application.ymlapplication.properties中配置安全设置。使用自定义拦截器来实现更复杂的逻辑。

示例代码:

# src/main/resources/application.yml
spring:
  security:
    basic:
      enabled: true
    user:
      name: admin
      password: admin
// src/main/java/com/example/demo/CustomWebSecurityConfigurerAdapter.java
package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.web.servlet.CommonsRequestMatcherBuilder;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/public/**").permitAll()
                .antMatchers("/admin/**").hasRole("ADMIN")
                .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }
}
部署与运行

打包Spring Boot应用

使用Maven或Gradle打包Spring Boot应用。Maven可以使用mvn package命令,Gradle可以使用gradle build命令。

示例代码:

# 打包Spring Boot应用
mvn package

将应用部署到Tomcat或Spring Boot内置容器

部署到Tomcat需要将打包后的war文件部署到Tomcat服务器中,部署到Spring Boot内置容器需要将jar文件运行。

示例代码:

# 运行Spring Boot应用
java -jar target/demo-0.0.1-SNAPSHOT.jar

应用监控与性能优化

使用Spring Boot Actuator提供的监控端点,如/actuator/health/actuator/metrics等,来监控应用的健康状态和性能指标。

示例代码:

# src/main/resources/application.yml
management:
  endpoints:
    web:
      exposure:
        include: "*"

// src/main/java/com/example/demo/CustomMetricsConfiguration.java
package com.example.demo;

import org.springframework.boot.actuate.metrics.MetricWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.actuate.metrics.writer.CompositeMetricWriter;
import org.springframework.boot.actuate.metrics.writer.DeltaWritingCompositeMeterRegistry;
import org.springframework.boot.actuate.metrics.writer.MetricWriter;

@Configuration
public class CustomMetricsConfiguration {

    @Bean
    public MetricWriter customMetricWriter() {
        return new CompositeMetricWriter(new DeltaWritingCompositeMeterRegistry());
    }
}
``

以上是创建Spring Boot项目的基本步骤和实战教程,涵盖了从项目初始化到部署运行的各个方面。希望对你有所帮助。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消