目次
構築に使用する環境
- エディター : Visual Studio Code
- OS : Widows 11
1. JDKのインストール
以下の理由から、RedHatのOpenJDKをインストールします。
※以下のサイトを参考にしてインストールしました。 WindowsにOpenJDKをインストールする手順
1-1. OpenJDKをダウンロード
※ダウンロードするには、RedHatのアカウントを作成する必要があります。
1-2. インストーラの実行
RedHatのサイトからダウンロードしたインストーラを実行します。 ウィザードで表示されるメッセージに従ってインストールを進めていきます。
※Java8以降はJAVA_HOMEではなく、システム環境変数にパスを見に行くので、デフォルトのままでOK
1-3. 結果を確認
コマンドプロンプト(もしくはPowerShell)で、java -version
を実行してJavaのバージョンが表示されればインストール成功です。
>java -version openjdk version "21.0.4" 2024-07-16 LTS OpenJDK Runtime Environment (Red_Hat-21.0.4.0+7-1) (build 21.0.4+7-LTS) OpenJDK 64-Bit Server VM (Red_Hat-21.0.4.0+7-1) (build 21.0.4+7-LTS, mixed mode, sharing) >
2. Visual Studio Codeの拡張機能をインストール
拡張機能のインストールは以下のページを参考に実施しました。
※3の手順も、上記2ページを参考にしています。
2-1. Java拡張機能をインストール
Extention Pack for Java
をインストール。
※VS CodeのJavaの拡張機能のAll in Oneみたいなパックです。
v0.29.0
の段階では以下の拡張機能が入っています。
- Language Support for Java(TM) by RedHat
- Debugger for Java
- Test Runner for Java
- Maven for Java
- Gradle for Java
- Project Manager for Java
- IntelliCode
2-2. Spring Boot拡張機能をインストール
Spring Boot Extention Pack
をインストール。
※Spring Bootを扱う上で便利な拡張機能の入ったパックです。
v0.2.1
の段階では以下の拡張機能が入っています。
3. Spring Bootのプロジェクトを作成
3-1. Javaプロジェクトを作成
Create Java Project
を押下後、以下を順番に設定していきます。
- project type(1)
- project type(2)
- Spring Bootのバージョン
3.3.3
※SNAPSHOT版ではない最新のものを指定しました。
- 使用する言語
Java
他に、Kotlinなども選択肢にありましたが、今回はJavaを選択しました。
- Group Id
- 任意のGroupId。
- Artifact Id
- 任意のArtifactId。
- packaging type
jar
war/jarの選択ですが、いったん、jarを選択しました。
- Javaのバージョン
- 依存するライブラリ
任意のライブラリ ※ここで指定したライブラリがpom.xmlにdependencyとして追加されます。 pom.xmlの以下の部分です。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
プロジェクトの作成に成功すると、画像のようなメッセージが表示されます。
※画像はパスを黒く塗りつぶしています。
作成されたプロジェクトを開くと、mainメソッドが作成されていました。
3-2. 実行確認
自動で作成されたmainメソッドを実行すると、以下のように動きました。
PS {projectのパス}> d:; cd '{projectのパス}'; & '{RedHatのパス}\java-21-openjdk-21.0.4.0.7-1\bin\java.exe' '@C:\Users\USER\AppData\Local\Temp\cp_4dj0i387059w3xhvviu0zhc0s.argfile' '{mainメソッドの定義されているクラス}' . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.3.3) 2024-09-03T21:13:18.952+09:00 INFO 16028 --- [{Artifact Id}] [ main] c.p.c.{作成したprojectのApplicationクラス} : Starting CaringDiaryApiApplication using Java 21.0.4 with PID 16028 ({Maven Projectのクラスファイルのパス} started by USER in {projectのパス}) 2024-09-03T21:13:18.959+09:00 INFO 16028 --- [{Artifact Id}] [ main] c.p.c.{作成したprojectのApplicationクラス} : No active profile set, falling back to 1 default profile: "default" 2024-09-03T21:13:20.661+09:00 INFO 16028 --- [{Artifact Id}] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2024-09-03T21:13:20.684+09:00 INFO 16028 --- [{Artifact Id}] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2024-09-03T21:13:20.685+09:00 INFO 16028 --- [{Artifact Id}] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.28] 2024-09-03T21:13:20.802+09:00 INFO 16028 --- [{Artifact Id}] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2024-09-03T21:13:20.804+09:00 INFO 16028 --- [{Artifact Id}] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1780 ms 2024-09-03T21:13:21.369+09:00 INFO 16028 --- [{Artifact Id}] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/' 2024-09-03T21:13:21.384+09:00 INFO 16028 --- [{Artifact Id}] [ main] c.p.c.{作成したprojectのApplicationクラス} : Started CaringDiaryApiApplication in 3.029 seconds (process running for 3.486) 2024-09-03T21:14:17.012+09:00 INFO 16028 --- [{Artifact Id}] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2024-09-03T21:14:17.013+09:00 INFO 16028 --- [{Artifact Id}] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2024-09-03T21:14:17.015+09:00 INFO 16028 --- [{Artifact Id}] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
※プロジェクト作成時にJDBCを選択していた場合、デフォルトのままでは、以下のエラーが発生し、起動できないので注意が必要です。
2024-09-03T21:25:34.266+09:00 WARN 6664 --- [{Artifact Id}] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception with message: Failed to determine a suitable driver class (中略) *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
起動させるには、DB周りの処理を書いたり、まだ設定が必要そうです。 今回はSpring Bootでものを作るための環境構築が目的なので、いったん、以下のように、pom.xmlに定義されているJDBCのdependencyをコメントアウトして、無理やり起動させました。
<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> -->
VS Codeのターミナルに o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
といった感じのメッセージが表示されたら、ブラウザで確認してみます。
http://localhost:8080/
をブラウザでたたくと、以下の画面が表示されました。
Whitelabel Error Page
というのは、Controllerクラスがまだ作られていないため出ているようです。
ただ、Springの環境自体はここまでいけば、整ったということなので、あとは自動で作成された雛形プロジェクトを肉付けしていけば良いようです。
余談ですが・・・
依存するライブラリに、Spring Securityを入れていると、Whitelabel Error Page
ではなく、ログインページが表示されるようです。
pom.xmlのdependency
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
http://localhost:8080/
で表示される画面