第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

Spring Boot學(xué)習(xí):從入門到實踐的簡單教程

標(biāo)簽:
SpringBoot
概述

本文提供了从入门到实践的Spring Boot学习教程,涵盖环境搭建、核心配置、常用组件介绍以及实战案例解析。通过本文,你可以快速掌握Spring Boot的基本使用方法,包括数据库集成、Web开发和安全认证等内容。此外,文章详细介绍了如何打包发布应用和使用Spring Boot Admin进行管理。

Spring Boot学习:从入门到实践的简单教程
1. Spring Boot简介与环境搭建

Spring Boot是什么

Spring Boot 是由 Pivotal 团队提供的一个基于 Spring 框架的全新项目,它的设计目标是简化 Spring 应用的创建、配置和部署过程。Spring Boot 通过约定优于配置的方式,极大地减少了开发者在配置 Spring 时需要编写的代码量,并提供了许多开箱即用的功能,如内嵌的 Tomcat、Jetty 和 Undertow 服务器、数据库集成、安全性和缓存支持等。

快速搭建开发环境

为了快速搭建 Spring Boot 开发环境,你需要以下工具和库:

  • JDK 8+:Spring Boot 3.x 版本建议使用 Java 17。
  • IDE:推荐使用 IntelliJ IDEA 或 Eclipse。
  • Maven 或 Gradle:用于构建项目。
  • Spring Initializr:通过它来快速生成 Spring Boot 项目。

使用 Spring Initializr 创建项目

  1. 访问 Spring Initializr
  2. 选择项目的基本信息,如项目类型、语言、依赖等。
  3. 下载并导入生成的项目到你的 IDE 中。

示例项目结构

一个典型的 Spring Boot 项目结构如下:

src
├── main
│   ├── java
│   │   └── com.example.demo
│   │       └── DemoApplication.java
│   └── resources
│       ├── application.properties
│       └── static
│       └── templates
└── test
    └── java
        └── com.example.demo
            └── DemoApplicationTests.java

第一个Spring Boot项目

创建一个简单的 Spring Boot 应用程序,实现一个简单的 RESTful API。

创建 Spring Boot 应用

  1. 新建项目

    mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  2. 修改 POM 文件

    pom.xml 中引入 Spring Boot 依赖:

    <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.7.0</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>
  3. 创建主类

    src/main/java/com/example/demo 目录下创建一个主类 DemoApplication.java

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    public class DemoApplication {
    
       public static void main(String[] args) {
           SpringApplication.run(DemoApplication.class, args);
       }
    
       @RestController
       public class HelloController {
           @GetMapping("/")
           public String hello() {
               return "Hello, World!";
           }
       }
    }
  4. 运行应用

    使用 Maven 命令运行 Spring Boot 应用:

    mvn spring-boot:run

    或者在 IDE 中直接运行 DemoApplication 类。

2. Spring Boot的核心配置

配置文件详解(application.properties/application.yml)

Spring Boot 使用 application.propertiesapplication.yml 两种格式的配置文件来管理应用的配置。它们通常放在 src/main/resources 目录下。

application.properties 示例
server.port=8080
spring.application.name=demo-app
logging.level.root=INFO
application.yml 示例
server:
  port: 8080
spring:
  application:
   name: demo-app
logging:
 level:
   root: INFO
使用配置文件

配置文件中的每个属性可以直接在代码中使用,例如在主类 DemoApplication.java 中通过 @Value 注解注入配置:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Properties;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @RestController
    public class HelloController {
        @Value("${server.port}")
        private String port;

        @GetMapping("/")
        public String hello() {
            return "Hello, World! Server is running on port " + port;
        }
    }
}

自动配置原理简介

Spring Boot 通过 @SpringBootApplication 注解自动配置应用。它包含 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解。

  • @Configuration:标识配置类。
  • @EnableAutoConfiguration:启用自动配置。
  • @ComponentScan:扫描组件。

使用注解快速开发

Spring Boot 提供了一系列注解,如 @Service@Repository@Controller,简化了开发流程。

一个简单的 Service 示例
package com.example.demo;

import org.springframework.stereotype.Service;

@Service
public class MyService {
    public String doSomething() {
        return "Service: Hello";
    }
}

3. Spring Boot中的常用组件

数据库集成(JPA, MyBatis等)

Spring Boot 支持多种数据库集成方式,如 JPA 和 MyBatis。

使用 JPA 进行数据库操作

首先,添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

配置数据源:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

定义实体类:

package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

定义 Repository:

package com.example.demo;

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User, Long> {
}
使用 MyBatis 进行数据库操作

首先,添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mybatis</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

配置数据源:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

定义实体类:

package com.example.demo;

public class User {
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

编写 Mapper 接口:

package com.example.demo;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
    User findById(Long id);
    void save(User user);
}

Web开发(Spring MVC, REST API等)

Spring Boot 支持 Spring MVC 和 RESTful API 开发。

使用 Spring MVC 创建 REST API

创建 Controller 类:

package com.example.demo;

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

import java.util.List;
import java.util.ArrayList;

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping
    public List<User> getUsers() {
        List<User> users = new ArrayList<>();
        users.add(new User(1L, "Alice", "alice@example.com"));
        users.add(new User(2L, "Bob", "bob@example.com"));
        return users;
    }
}

配置 RESTful API:

# REST API 配置示例
spring.mvc.static-path-pattern=/static/**

安全认证(Spring Security等)

Spring Boot 通过 Spring Security 简化了安全认证流程。

配置 Spring Security

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

配置安全认证:

package com.example.demo;

import org.springframework.context.annotation.Bean;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
            .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
            .and()
            .logout()
                .permitAll();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

4. 实战案例解析

构建一个简单的CRUD应用

构建一个简单的 CRUD 应用,实现数据的增删改查操作。

创建实体类
package com.example.demo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private int price;

    // Getters and Setters
}
创建 Repository
package com.example.demo;

import org.springframework.data.repository.CrudRepository;

public interface ProductRepository extends CrudRepository<Product, Long> {
}
创建 Controller
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class ProductController {

    @Autowired
    private ProductRepository repository;

    @GetMapping("/products")
    public List<Product> getAllProducts() {
        return repository.findAll();
    }

    @PostMapping("/products")
    public Product createProduct(@RequestBody Product product) {
        return repository.save(product);
    }

    @PutMapping("/products/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        return repository.save(product);
    }

    @DeleteMapping("/products/{id}")
    public void deleteProduct(@PathVariable Long id) {
        repository.deleteById(id);
    }
}
测试 REST API

使用 Postman 或其他工具测试 REST API。

集成数据库,实现数据增删改查

继续使用上面的 CRUD 应用示例,集成数据库并实现数据操作。

配置数据库

application.properties 中配置数据库连接:

spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
测试数据库操作

在 Controller 中测试 CRUD 操作:

@GetMapping("/products")
public List<Product> getAllProducts() {
    return repository.findAll();
}

@PostMapping("/products")
public Product createProduct(@RequestBody Product product) {
    return repository.save(product);
}

@PutMapping("/products/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
    product.setId(id);
    return repository.save(product);
}

@DeleteMapping("/products/{id}")
public void deleteProduct(@PathVariable Long id) {
    repository.deleteById(id);
}

添加REST API接口

继续上述 CRUD 应用示例,添加更多的 REST API 接口。

添加一个新的 REST API 接口
@GetMapping("/products/{id}")
public Product getProduct(@PathVariable Long id) {
    return repository.findById(id).orElse(null);
}

5. 日志与异常处理

日志框架配置(Logback, SLF4J)

Spring Boot 使用 Logback 和 SLF4J 作为默认的日志框架。

配置 Logback

src/main/resources 目录下创建 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>

    <logger name="com.example.demo" level="DEBUG"/>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
配置 SLF4J

application.properties 中配置日志级别:

logging.level.root=INFO
logging.level.com.example.demo=DEBUG

异常处理机制

Spring Boot 提供了全局异常处理机制,可以通过 @ControllerAdvice 注解来定义全局异常处理器。

全局异常处理器示例
package com.example.demo;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        return new ResponseEntity<>("An error occurred: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

系统监控(Actuator组件)

Spring Boot Actuator 提供了对 Spring Boot 应用的运行时信息监控。

启用 Actuator

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

配置健康检查:

management.endpoints.web.exposure.include=health,info

访问 /actuator 端点查看应用信息。

6. 部署与发布

打包发布到本地

使用 Maven 命令打包应用:

mvn clean package

生成的 JAR 文件在 target 目录下。

部署到云服务器(Docker容器化部署)

首先,构建 Docker 镜像:

FROM openjdk:11-jre-slim
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建 Docker 镜像:

docker build -t demo-app .

运行 Docker 容器:

docker run -p 8080:8080 demo-app

使用Spring Boot Admin进行应用管理

Spring Boot Admin 是一个用于监控 Spring Boot 应用的开源项目。

添加依赖

在 Admin 服务端添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
配置 Admin 服务端

在 Admin 服务端 application.properties 中配置:

spring.boot.admin.context-path=/admin
server.port=8081
配置 Admin 客户端

在客户端 application.properties 中配置:

spring.boot.admin.client.enabled=true
spring.boot.admin.client.url=http://localhost:8081

访问 http://localhost:8081/admin 查看 Admin 控制台。

通过以上步骤,你已经完成了一个简单的 Spring Boot 应用开发、配置、部署和监控的全过程。希望这篇教程对你有所帮助。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消