SpringBoot4.0整合Scala完整使用

SpringBoot4.0整合Scala遇到的坑,最新版本的特性支持,手把手带大家搭建整合

1. 先看项目结构

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

2. 安装scala插件


Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

3. 依赖POM

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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.cloud.xx</groupId>
    <artifactId>xx-cloud</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <mysql.connector.version>8.0.16</mysql.connector.version>
    </properties>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

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

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot4-starter</artifactId>
            <version>3.5.14</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.79</version>
        </dependency>
        
        <!-- 或者使用PostgreSQL兼容驱动 -->
        <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.7.8</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>cloud-boot-jiabo</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>

    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>

4. 创建自己的Scala代码

5. 创建自己Scala的启动类

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

scala 复制代码
package com.cloud.xx

import org.mybatis.spring.annotation.MapperScan
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.scheduling.annotation.EnableScheduling


@MapperScan(Array("com.cloud.xx.mapper"))
@EnableScheduling
@SpringBootApplication
class ApplicationBoot

object ApplicationBoot extends App {
  SpringApplication.run(classOf[ApplicationBoot], args: _*)
}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

6. 创建自己Scala的Controller

scala 复制代码
package com.cloud.xx.controller

import com.cloud.xx.common.utils.R
import com.cloud.xx.mapper.UserMapper
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.{GetMapping, RequestMapping, RequestParam, RestController}

import scala.collection.convert.ImplicitConversions.`collection AsScalaIterable`

@Tag(name = "用户信息", description = "用户相关接口")
@RestController
@RequestMapping(Array("/user"))
class UserController {

  @Autowired
  val etsEntityService: UserMapper = null

  /**
   * 测试Vabase海量数据库FT项目对接
   *
   * @param id
   * @return
   */
  @Operation(summary = "测试问好", description = "测试问好")
  @GetMapping(Array("getInfo")) def ok(@RequestParam("id") id: String): R[_] = {
    import scala.jdk.CollectionConverters._

    val entity = etsEntityService.selectList(null)
    val list = entity.map { num =>
      num.setUserName(num.getUserName + "1")
      num
    }
    R.ok(list.asJava) // 现在是 List[UserEntity],序列化正常
  }

}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

7. 创建自己Scala的Mapper

scala 复制代码
package com.cloud.xx.mapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper
import com.cloud.xx.entity.UserEntity
import org.apache.ibatis.annotations.Mapper


@Mapper
trait UserMapper extends BaseMapper[UserEntity]{

}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

8. 创建自己Scala的Service

scala 复制代码
package com.cloud.xx.service

import com.baomidou.mybatisplus.extension.service.IService
import com.cloud.xx.entity.UserEntity

trait UserService extends IService[UserEntity] {

}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

9. 创建自己Scala的Services实现类

scala 复制代码
package com.cloud.xx.service.impl

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import com.cloud.xx.entity.UserEntity
import com.cloud.xx.mapper.UserMapper
import com.cloud.xx.service.UserService
import org.springframework.stereotype.Service

@Service
class UserServiceImpl extends ServiceImpl[UserMapper, UserEntity] with UserService {

}

Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

接口请求测试

相关推荐
码路飞2 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
序安InToo2 小时前
第6课|注释与代码风格
后端·操作系统·嵌入式
xyy1232 小时前
C#: Newtonsoft.Json 到 System.Text.Json 迁移避坑指南
后端
洋洋技术笔记2 小时前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang052 小时前
VS Code 配置 Markdown 环境
后端
navms2 小时前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang052 小时前
离线数仓的优化及重构
后端
Nyarlathotep01132 小时前
gin01:初探gin的启动
后端·go
JxWang052 小时前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang052 小时前
Windows Terminal 配置 oh-my-posh
后端