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全栈实战:手撸企业级项目,从入门到架构师!

接口请求测试

相关推荐
m0_7066532328 分钟前
分布式系统安全通信
开发语言·c++·算法
2501_9419820536 分钟前
深度对比:Java、Go、Python 实现企微外部群推送,哪个效率更高?
java·golang·企业微信
寻寻觅觅☆1 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
马猴烧酒.1 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
lightqjx1 小时前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
掘金者阿豪1 小时前
关系数据库迁移的“暗礁”:金仓数据库如何规避数据完整性与一致性风险
后端
zh_xuan1 小时前
kotlin lazy委托异常时执行流程
开发语言·kotlin
ServBay2 小时前
一个下午,一台电脑,终结你 90% 的 Symfony 重复劳动
后端·php·symfony
sino爱学习2 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
阿猿收手吧!2 小时前
【C++】string_view:高效字符串处理指南
开发语言·c++