注:

TASK 3:在 VS 代码中创建 Micronaut 应用程序

在此实验室中,您将创建 Micronaut 应用程序并将应用程序配置为与 Oracle Autonomous Database 通信。

在预配过程中,GraalVM Tools for Micronaut Extension已预先安装在 VS Code 中,以节省时间。Micronaut 支持还包括 Micronaut Launch 应用程序,允许您通过 VS Code 中的界面创建 Micronaut 项目。您可以结合预安装为依赖项的 GraalVM Tools for Java Extension,在 GraalVM Enterprise 上运行 Micronaut 项目,然后从 VS Code 直接对其进行调试。

估计时间:15 分钟

任务内容

在本任务中,您将执行以下操作:

步骤 1:创建新的 Micronaut 应用程序

  1. 在连接到远程主机的“VS 代码”窗口中,转至View,然后转至 Command Palette(还可通过按 F1 或 Linux 的 Ctrl+Shift+P 热键组合打开命令选项板),然后搜索 "Micronaut"。

  2. 选择 Micronaut: Create Micronaut Project 以创建 Micronaut 项目。

  3. 按照向导提示配置项目:

    • 选择可用的最新 Micronaut 版本,不要使用 SNAPSHOT 选择选项

    • 选取应用程序类型:Micronaut 应用程序

    • 选择可用的最新 Java 版本。创建此实验时,它是 GraalVM EE 22.0.0,Java 17

    • 提供项目名称:ocidemo

    • 提供基本软件包名称:com.example

    • 选择项目的语言:Java

    • 添加项目的功能:Database: Micronaut Data JDBCDatabase: Oracle Database Server。按确定

    • MavenGradle 作为构建工具

    • 选择测试框架:JUnit

    • 在远程主机上选择目标文件夹以保存项目文件:键入 /home/opc/ 并按 OK 确认。

    新创建的 Micronaut 项目文件将在 VS 代码的当前工作区中打开。

步骤 2:配置应用程序以连接到 Oracle Autonomous Database 实例

Oracle Cloud Autonomous Database 连接信息和身份证明存储在 Oracle Wallet 中。使用 Micronaut,您可以自动生成和下载 Wallet 并配置数据源。完成后续步骤以使用 Wallet 中的自动数据源配置:

  1. 单击左侧面板中的项目文件夹名称,然后打开 src/main/resources/ 下的 application.yml 文件。

  2. 将默认文件内容替换为以下数据:

    micronaut:
      application:
        name: ocidemo
    datasources:
      default:
        ocid: ocid1.autonomousdatabase.oc1...
        walletPassword: WALLET_PASSWORD
        username: DATABASE_USERNAME 
        password: DATABASE_PASSWORD
    
  3. 修改默认数据源连接设置。

    • 返回浏览器窗口,您应该看到 Oracle Autonomous Database 实例控制台。在“Autonomous Database Information”>“General Information”下,查找并复制实例的 ocid 值。

    Oracle Autonomous Database 实例 ID

    • 返回到 VS 代码,在 application.yml 中返回 ocid 字段中的 OCID。
    • walletPassword 用于加密 Wallet 中的密钥,可以是您选择的任何内容(长度必须至少为 8 个字符,并且必须至少包含一个字母和一个数字字符或一个特殊字符)。
    • usernamepassword 值应为您在上一个练习中创建数据库方案用户时选择的名称和密码。

注意:在 VS 代码文件中,不会自动保存。要保存对特定文件的更改,请转至文件保存全部保存以保存对一系列文件的编辑。或者,键入 CTLR +S

步骤 3:配置 Oracle Autonomous Database JDBC 驱动程序

必须在项目的根目录的 pom.xml 文件中指定正确版本的 Oracle Database 驱动程序以及所需的模块。

  1. 应用 Oracle Database BOM 21.1.0.0 或更高版本。

    如果使用的是 Maven,请在项目的根目录中打开 pom.xml,然后在 repositoriesdependencies 部分之间插入以下内容:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc-bom</artifactId>
          <version>21.1.0.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    如果使用 Gradle,请在项目的根目录中打开 build.gradle,然后在 dependencies 块末尾插入以下内容:

    implementation platform("com.oracle.database.jdbc:ojdbc-bom:21.1.0.0")
    
  2. 添加对 micronaut-oraclecloud-atp 模块的依赖性。

    如果使用的是 Maven,请打开 pom.xml,然后在 dependencies 块中插入以下内容:

    <dependency>
        <groupId>io.micronaut.oraclecloud</groupId>
        <artifactId>micronaut-oraclecloud-atp</artifactId>
        <version>1.2.1</version>
        <scope>runtime</scope>
    </dependency>
    

    如果使用 Gradle,请打开 build.gradle,然后在 dependencies 块的末尾添加以下内容:

    runtimeOnly("io.micronaut.oraclecloud:micronaut-oraclecloud-atp")
    
  3. 启用 OCI SDK 日志记录。

    如果使用的是 Maven,请打开 pom.xml,然后在 dependencies 块中添加以下依赖项:

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.13</version>
      <scope>runtime</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>    
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.36</version>
        <scope>runtime</scope>
    </dependency>
    

    如果使用 Gradle,请在 dependencies 块上方插入以下配置:

    configurations.all {
        resolutionStrategy.dependencySubstitution {
            substitute(module('commons-logging:commons-logging'))
                    .using(module('org.slf4j:jcl-over-slf4j:1.7.36'))
        }
    }
    

步骤 4:配置 Flyway 以创建方案

接下来,您需要启用对开源高速数据库迁移工具包的支持,该工具包允许您定义 SQL 脚本来管理和对数据库方案进行版本控制,以便您可以逐步演化方案以及应用程序的新版本。

  1. 添加对 micronaut-flyway 的依赖性。

    如果使用的是 Maven,请打开 pom.xml,然后在 dependencies 块中插入以下内容:

    <dependency>
        <groupId>io.micronaut.flyway</groupId>
        <artifactId>micronaut-flyway</artifactId>
        <scope>runtime</scope>
    </dependency>
    

    如果使用 Gradle,请打开 build.gradle,然后在 dependencies 块的末尾添加以下内容:

    runtimeOnly("io.micronaut.flyway:micronaut-flyway")
    
  2. 切换到 src/main/resources/application.yml 文件并将以下配置添加到第 10 行 datasources 部分的下方,以允许在启动时运行 Flyway:

    flyway:
      datasources:
        default:
          enabled: true
    
  3. 打开 src/test/resources/ 下的 application-test.yml 文件,并将文件默认内容替换为 Flyway 的以下条目,该条目将包含测试配置并将 Flyway 设置为在应用程序启动时清除方案,以确保使用新数据运行测试:

    flyway:
      datasources:
        default:
          clean-schema: true
    

注意:在现实生活中,您可以设置一个单独的数据库来运行测试。

步骤 5:定义 SQL 迁移脚本

下一步是定义将创建应用程序初始方案的 SQL 迁移脚本。

  1. src/main/resources 下创建 db/migration 文件夹。右键单击 src/main/resources 以展开内容菜单,然后选择新建文件夹

    在 VS 代码中创建新的文件夹

  2. 创建 SQL 文件。右键单击 src/main/resources/db/migration/ 以展开内容菜单,然后选择新建文件。将其命名为 V1__create-schema.sql

  3. 将以下 SQL 代码添加到文件中:

    CREATE TABLE "PET" ("ID" VARCHAR(36),"OWNER_ID" NUMBER(19) NOT NULL,"NAME" VARCHAR(255) NOT NULL,"TYPE" VARCHAR(255) NOT NULL);
    CREATE TABLE "OWNER" ("ID" NUMBER(19) PRIMARY KEY NOT NULL,"AGE" NUMBER(10) NOT NULL,"NAME" VARCHAR(255) NOT NULL);
    CREATE SEQUENCE "OWNER_SEQ" MINVALUE 1 START WITH 1 NOCACHE NOCYCLE;
    

    上面的 SQL 脚本将创建 ownerpet 表,以便在 Autonomous Database 中存储所有者及其宠物的数据。

您现在可以继续执行下一个任务

了解更多