首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 框架实操内容:从入门到精通的 Spring Boot 3.x 与 MyBatis-Plus 实战教程

Java 框架实操内容:从入门到精通的 Spring Boot 3.x 与 MyBatis-Plus 实战教程

原创
作者头像
啦啦啦191
修改2025-07-24 11:10:35
修改2025-07-24 11:10:35
5540
举报
文章被收录于专栏:Java开发Java开发

以下是补充了Java最新技术和框架实操内容的完整文章:

Java学习资料汇总(含最新技术实操)

一、Java基础环境搭建(Java 17+)

1. JDK 17 安装与配置

推荐使用 SDKMAN! 管理Java版本:

代码语言:bash
复制
# 安装SDKMAN!
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# 安装Java 17 LTS
sdk install java 17.0.8-tem
sdk default java 17.0.8-tem

2. 现代化IDE配置(IntelliJ IDEA)

  • 启用Preview Features:Settings > Build, Execution, Deployment > Compiler > Java Compiler > Additional command line parameters: --enable-preview
  • 配置Lombok插件:Settings > Plugins > Marketplace > 搜索"Lombok"并安装

二、Java新特性实战

1. 模式匹配(Java 17+)

代码语言:java
复制
// 旧写法
if (obj instanceof String) {
    String s = (String) obj;
    System.out.println(s.length());
}

// 新模式匹配
if (obj instanceof String s) {
    System.out.println(s.length());
}

// 结合switch表达式
Object obj = LocalDate.now();
int hashCode = switch (obj) {
    case String s -> s.hashCode();
    case Integer i -> i.hashCode();
    case LocalDate d -> d.getDayOfMonth();
    default -> obj.toString().hashCode();
};

2. 文本块(Java 15+)

代码语言:java
复制
// 旧写法
String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, World!</p>\n" +
              "    </body>\n" +
              "</html>";

// 文本块写法
String html = """
              <html>
                  <body>
                      <p>Hello, World!</p>
                  </body>
              </html>
              """;

3. 记录类(Java 16+)

代码语言:java
复制
// 传统JavaBean
public class Person {
    private final String name;
    private final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getters, equals, hashCode, toString
}

// 记录类写法
record Person(String name, int age) {}

三、Spring Boot 3 与微服务实战

1. 创建RESTful API项目

使用Spring Initializr快速创建项目:

代码语言:bash
复制
curl https://start.spring.io/starter.tgz -d dependencies=web,data-jpa,validation,actuator -d javaVersion=17 -d type=maven-project -d groupId=com.example -d artifactId=demo -d name=demo | tar -xzvf -

2. 控制器与验证

代码语言:java
复制
@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping
    public ResponseEntity<User> createUser(@Valid @RequestBody UserRequest request) {
        User user = userService.createUser(request);
        return ResponseEntity.created(URI.create("/api/users/" + user.getId())).body(user);
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        return userService.getUserById(id)
                .map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
}

// 验证注解示例
public record UserRequest(
    @NotBlank(message = "姓名不能为空")
    String name,
    
    @Email(message = "邮箱格式不正确")
    String email,
    
    @Min(value = 18, message = "必须年满18岁")
    Integer age
) {}

3. 配置文件分层管理

代码语言:yaml
复制
# application.yml
spring:
  application:
    name: user-service
  profiles:
    active: dev

# application-dev.yml
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/user_db
    username: postgres
    password: password
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        dialect: org.hibernate.dialect.PostgreSQLDialect

# application-prod.yml
spring:
  datasource:
    url: jdbc:postgresql://prod-db:5432/user_db
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}

四、响应式编程(Spring WebFlux)

1. 创建响应式API

代码语言:java
复制
@RestController
@RequestMapping("/api/books")
public class BookController {

    @Autowired
    private BookRepository bookRepository;

    @GetMapping
    public Flux<Book> getAllBooks() {
        return bookRepository.findAll();
    }

    @PostMapping
    public Mono<Book> createBook(@RequestBody Book book) {
        return bookRepository.save(book);
    }
}

// 响应式Repository
public interface BookRepository extends ReactiveCrudRepository<Book, String> {
    Flux<Book> findByAuthor(String author);
}

2. 响应式测试

代码语言:java
复制
@WebFluxTest(BookController.class)
class BookControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private BookRepository bookRepository;

    @Test
    void shouldReturnAllBooks() {
        Book book = new Book("1", "Java 17", "Doubao");
        when(bookRepository.findAll()).thenReturn(Flux.just(book));

        webTestClient.get().uri("/api/books")
                .exchange()
                .expectStatus().isOk()
                .expectBodyList(Book.class)
                .contains(book);
    }
}

五、容器化与云原生部署

1. Dockerfile配置

代码语言:dockerfile
复制
# 基础镜像
FROM eclipse-temurin:17-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .

# 下载依赖
RUN ./mvnw dependency:go-offline -B

# 复制源代码
COPY src src

# 构建应用
RUN ./mvnw package -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)

# 创建运行时镜像
FROM eclipse-temurin:17-jre-alpine
VOLUME /tmp
ARG DEPENDENCY=/app/target/dependency
COPY --from=0 ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=0 ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=0 ${DEPENDENCY}/BOOT-INF/classes /app

# 暴露端口
EXPOSE 8080

# 启动应用
ENTRYPOINT ["java","-cp","app:app/lib/*","com.example.demo.DemoApplication"]

2. Kubernetes部署清单

代码语言:yaml
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
  labels:
    app: user-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
      - name: user-service
        image: doubao/user-service:1.0.0
        ports:
        - containerPort: 8080
        env:
        - name: SPRING_PROFILES_ACTIVE
          value: prod
        - name: DB_USERNAME
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: username
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: password
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /actuator/health
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5

六、测试与DevOps实践

1. 单元测试与集成测试

代码语言:java
复制
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerIntegrationTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private UserRepository userRepository;

    @Test
    void shouldCreateUser() throws Exception {
        UserRequest request = new UserRequest("Doubao", "doubao@example.com", 20);

        mockMvc.perform(post("/api/users")
                .contentType(MediaType.APPLICATION_JSON)
                .content(objectMapper.writeValueAsString(request)))
                .andExpect(status().isCreated())
                .andExpect(header().string("Location", containsString("/api/users/")));

        assertThat(userRepository.count()).isEqualTo(1);
    }
}

2. GitHub Actions CI/CD流程

代码语言:yaml
复制
name: Java CI with Maven

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 17
      uses: actions/setup-java@v4
      with:
        java-version: '17'
        distribution: 'temurin'
        cache: maven

    - name: Build with Maven
      run: mvn -B package --file pom.xml

    - name: Run Tests
      run: mvn test

    - name: Build Docker Image
      if: github.ref == 'refs/heads/main'
      uses: docker/build-push-action@v5
      with:
        context: .
        push: false
        tags: doubao/user-service:${{ github.sha }}

    - name: Upload Artifact
      uses: actions/upload-artifact@v4
      with:
        name: target
        path: target/*.jar

通过以上实操内容,你可以系统性地学习Java最新技术栈,从语言特性到微服务架构,再到云原生部署,形成完整的知识体系。建议按照从基础到高级的顺序逐步实践,并结合官方文档深入理解每个技术点的原理和最佳实践。


Java 最新技术,Spring Boot 3.x,MyBatis-Plus,Java 框架实操,Java 从入门到精通,Spring Boot 实战教程,MyBatis-Plus 实战,Java 开发,微服务架构,热门框架,编程教程,技术指南,框架应用,代码实操,Java 技术升级

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java学习资料汇总(含最新技术实操)
    • 一、Java基础环境搭建(Java 17+)
      • 1. JDK 17 安装与配置
      • 2. 现代化IDE配置(IntelliJ IDEA)
    • 二、Java新特性实战
      • 1. 模式匹配(Java 17+)
      • 2. 文本块(Java 15+)
      • 3. 记录类(Java 16+)
    • 三、Spring Boot 3 与微服务实战
      • 1. 创建RESTful API项目
      • 2. 控制器与验证
      • 3. 配置文件分层管理
    • 四、响应式编程(Spring WebFlux)
      • 1. 创建响应式API
      • 2. 响应式测试
    • 五、容器化与云原生部署
      • 1. Dockerfile配置
      • 2. Kubernetes部署清单
    • 六、测试与DevOps实践
      • 1. 单元测试与集成测试
      • 2. GitHub Actions CI/CD流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档