IDEAでjavaマルチモジュールプロジェクトをどうやって作成するか教えます。
一、spring initializrを使ってjavaプロジェクトを作成する 1、IDEAを起動し、javaプロジェクトを新設し、ガイドを使ってspringbootフレームを作成するプロジェクト .プロジェクト情報を設定し、javaバージョン選択8 、プロジェクトをチェックするために必要な依存度 、項目名を設定し、 をクリックして完成します。
5.mavenがプロジェクトに必要な依存度を全部ダウンロードして、プロジェクト構造を展開します。下図のように、springbootの枠組みを作成する簡単なプロジェクトを完成します。
二、プロジェクトを修正し、webモジュールを追加する 1、appdemoプロジェクトのpomファイルを修正して、工程の包装方式を改正してpomとなり、プロジェクトは父工程 になりました。、ファイルを開く-新規作成-モジュールを開き、新しいモジュールを開いてウィザードを作成し、mavenモードを選択し、テンプレートを選択する必要がなく、次のステップをクリックしてください。
、モジュール名をウェブに設定し、親プロジェクトがappdemoであることを確認し、 をクリックして完成しました。
4、maven導入モジュールが終了するのを待って、プロジェクト構造を展開します。以下の図のように、appdemoプロジェクトにwebモジュール が追加されました。
、appdemoのpomファイルには、モジュール情報 が自動的に追加されます。、webモジュール内のpomファイルを修正し、パッケージ方式を追加する 。
、プロジェクトのフレームワークを展開し、親プロジェクトのカバン:comp.example.appdemo、および起動ファイルは、すべてウェブモジュールのjavaフォルダの下に移動します。
マルチモジュールプロジェクトでは、プロジェクト起動はwebモジュールで管理されていますので、起動ファイルとパッケージ構造をwebモジュールの下に移動する必要があります。
移動が完了しました。プロジェクトアーキテクチャは以下の通りです。
8、無駄なファイルやファイルを削除し、赤枠の中身を削除する 多モジュール工程では、それぞれモジュールの中でコードを開発して、父工程の中開発ではないので、父工程のappdemoの中のsrcフォルダは使えなくなります。
三、entity、service、serviceImpl、daoモジュールを追加する。 1、webモジュールを追加するように、entity、service、serviceImpl、daoモジュール を追加する。、各モジュールのpomファイルを修正し、パッケージ方式を追加します。 、親工程のpomファイルは、モジュール情報 を自動的に増加させます。、モジュールが全部追加された後、プロジェクトのファイル構造は以下の通りです。
四、修正項目依存情報
親項目の依存性を変更 1、最初のステップでspringbootフレームワークプロジェクトを作成した後、pomファイルに自動的にプロジェクトに必要な依存性が追加されました。これはしばらく修正する必要がありません。 、各サブモジュールを依存として親プロジェクトに導入する(webモジュールを導入していない。webモジュールは他のモジュールに依存するが、他のモジュールはwebモジュールに依存しない)
webモジュールのpomファイルを変更し、次のような依存性を追加します。
五、起動プロファイルを変更する
起動クラスAppdemoApplicationはすでにウェブモジュールに移動しており、ウェブモジュールから起動する項目が要求されているので、親プロジェクトの起動プロファイルを削除し、ウェブのpomファイルに起動プロファイルを追加する必要があります。 1、親項目pomファイル中のbuild部分を注釈する 、webモジュールのpomファイルにbuild構成 を追加する。
起動項目の修正をしないと、起動クラスを実行する時に、mainメソッドが見つからなくなり、プロジェクトが起動できなくなります。
六、各モジュールでコードを作成する
entityモジュールに実体ファイルのResonseとStuInfoを追加します。
、Reponse類は、controlorでフロントエンドに結果を返すために使用されます。コードは以下の通りです。 、StuInfo類はデータベース作成テーブル、前後端データ転送、dao層操作データのデータテンプレートとして使用されています。コードは以下の通りです。
daoモジュールでは、データベース操作インターフェースを追加します。
、データベースを操作するので、jpaを使っています。japは多くのパッケージを提供しています。ここではdemoを作るために使われています。あまり複雑ではなく、JpaRepositoryインターフェースを継承すればいいです。コードは以下の通りです。 。、データベース接続の追加、およびjpaプロファイル 開発環境、テスト環境、プリ配布環境、オンライン環境など様々な環境がありますので、異なる環境を切り替えやすいように複数のプロファイルを設定できます。プロファイルの名前は、「appication-XX.yml」です。開発環境のように、「appication-dev.yml」と書くことができます。
devを参照するこのプロファイルは、プロファイルappration.ymlでのみアクティブにすることができます。フォーマットは以下の通りです。
mysqlデータベースに接続するurlは、ネット上で多く紹介されています。
username、password:選択する時、data-username、data-passwordと書かないでください。そうでないとプロジェクトをスタートさせる時、接続データベースのアカウントが無効か無権限の状況を報告します。
driver-class-name:この駆動配置は、バージョンによって要求が異なりますが、現在の高バージョンの駆動は全部これです。
serviceモジュールでインターフェースStuServiceを定義する
インターフェースコードは以下の通りです
コードは以下の通りです
@Log 4 j 2,ログツール
@Autowired、StuInfoDaoを注入します。
webモジュールでは、フロントエンドの呼び出しを要求するために、controlorクラスを作成します。
コードは以下の通りです
プロジェクトは起動過程で、スプリングは工程内のクラスをスキャンして、自動的にオブジェクトを生成してプログラムの呼び出しに用いますが、プロジェクトの自動スキャン時にはいくつかの種類を無視します。これはスキャンが必要なパケットを明確に指定する必要があります。起動コードは以下の通りです。
1、mavenツール「clean」を使って前回包装したファイル 、クリーンアップが完了したら、【install】プログラムは、各モジュールをコンパイルし、モジュール間の依存度と呼び出しが便利です。 、インストールが完了したら、右クリックで起動類を実行し、 を実行しました。 4、postmanを使ってインターフェースを呼び出すと、contentt-typeは【appliation/json】に設定されます。charset=utf-8】
八、棚を作る時にぶつかる問題、データベース接続の設定ファイルが間違っていて、データベース・タイムズのユーザー名が接続できなくなりました。この注意構成のキーワードは を間違えないようにしてください。、各モジュールの依存性、一部の依存性は親プロジェクトと衝突します。これは調整が必要で、引用の依存性を繰り返します。依存するクリーンアップ が必要です。、springのいくつかの自動注入は実現できません。springスキャンが無視されていることが多く、スタートクラスにスキャンを追加する必要がある です。、プロジェクトの変更によって、 、注意すべきところは、各モジュールのパッケージ名構造は同じであるべきです。たとえば、私のものは、すべてcomp.exampleの です。
九、面白い配置 1、オンラインでbannerファイル形式を生成する 、生成した文字をファイルbanner.txtにコピーする 、banner.txtファイルをwebモジュールのresourceに入れます。起動項目はあなたが設定した文字 を見ます。
この記事ではIDEAでjavaマルチモジュールプロジェクトを作成する方法について紹介します。より多くの関連IDEAでjavaマルチモジュールプロジェクトの内容を作成します。以前の記事を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
二、プロジェクトを修正し、webモジュールを追加する
<packaging>pom</packaging>
<modules>
<module>web</module>
</modules>
<packaging>jar</packaging>
マルチモジュールプロジェクトでは、プロジェクト起動はwebモジュールで管理されていますので、起動ファイルとパッケージ構造をwebモジュールの下に移動する必要があります。
移動が完了しました。プロジェクトアーキテクチャは以下の通りです。
三、entity、service、serviceImpl、daoモジュールを追加する。
<packaging>jar</packaging>
<modules>
<module>web</module>
<module>entity</module>
<module>service</module>
<module>serviceImpl</module>
<module>dao</module>
</modules>
四、修正項目依存情報
親項目の依存性を変更
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>entity</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>serviceImpl</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
dependencyManagementを使用して依存関係を管理しており、サブモジュールが引用管理に依存する場合は、バージョン番号を設定しなくてもいいです。webモジュールのpomファイルを変更し、次のような依存性を追加します。
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>entity</artifactId>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>service</artifactId>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>serviceImpl</artifactId>
</dependency>
</dependencies>
serviceモジュールpomファイルを修正し、次のような依存性を追加します。
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>entity</artifactId>
</dependency>
</dependencies>
serviceImplモジュールのpomファイルを修正し、次のような依存性を追加します。
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>entity</artifactId>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>dao</artifactId>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>service</artifactId>
</dependency>
</dependencies>
entityモジュールpomファイルを修正し、次のような依存性を追加します。
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
daoモジュールのpomファイルを修正し、次のような依存性を追加します。
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
</dependencies>
親プロジェクトのappdemoのpomファイルを修正し、データベースに関する依存性を削除します。
<!--<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>-->
親プロジェクトで設定された依存性は、サブモジュールで自動的に継承され、参照を繰り返す必要はないが、サブモジュールごとにデータの接続、操作が必要となるというわけではないので、親プロジェクトのpomファイルでは、これらの依存性は削除され、データベースの接続、オペレーティングデータベースのdaoモジュール、およびエンティティクラスを使用してテーブルを作成するentityモジュールに関連しています。これらの必要な依存性を個別に導入すれば良い。五、起動プロファイルを変更する
起動クラスAppdemoApplicationはすでにウェブモジュールに移動しており、ウェブモジュールから起動する項目が要求されているので、親プロジェクトの起動プロファイルを削除し、ウェブのpomファイルに起動プロファイルを追加する必要があります。
<!--<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
比較的簡単な方法は、親プロジェクトのこのbuildプロファイルをウェブモジュールのpomにコピーすることです。起動項目の修正をしないと、起動クラスを実行する時に、mainメソッドが見つからなくなり、プロジェクトが起動できなくなります。
六、各モジュールでコードを作成する
entityモジュールに実体ファイルのResonseとStuInfoを追加します。
package com.example.entity.common;
import lombok.Data;
@Data
public class Response<T> {
private int code;
private String message;
private T data;
public Response(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
}
package com.example.entity.stuEntity;
import lombok.Data;
import javax.persistence.*;
import java.sql.Timestamp;
@Data
@Entity
@Table(name = "stuinfo")
public class StuInfo{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;//id, ,
private int stuid;// id
private String name;//
private int gender;//
private int age;//
private int grade_num;//
private int class_num;//
private int status;// ,1- ,2-
private Timestamp createtime;//
private Timestamp updatetime;//
}
@Table(name=「stuinfo」)は赤い糸を申し込みます。赤い線を表示したくないなら、プロジェクトにデータベース情報を配置して、関連を作ってもいいです。処理しなくても大丈夫です。daoモジュールでは、データベース操作インターフェースを追加します。
package com.example.dao;
import com.example.entity.stuEntity.StuInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface StuInfoDao extends JpaRepository<StuInfo, Long> {
}
devを参照するこのプロファイルは、プロファイルappration.ymlでのみアクティブにすることができます。フォーマットは以下の通りです。
spring:
profiles:
active: dev
appication-dev.ymlには、データベース接続やjpaなどの情報が配置されています。内容は以下の通りです。
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo_db?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&serverTimezone=UTC
# url: jdbc:mysql://localhost:3306/demo_db?serverTimezone=UTC&useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database: mysql
show-sql: true
hibernate:
ddl-auto: create
naming:
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
以上のプロファイルでは、mysqlデータベースに接続するurlは、ネット上で多く紹介されています。
username、password:選択する時、data-username、data-passwordと書かないでください。そうでないとプロジェクトをスタートさせる時、接続データベースのアカウントが無効か無権限の状況を報告します。
driver-class-name:この駆動配置は、バージョンによって要求が異なりますが、現在の高バージョンの駆動は全部これです。
serviceモジュールでインターフェースStuServiceを定義する
インターフェースコードは以下の通りです
package com.example.service;
import com.example.entity.stuEntity.StuInfo;
public interface StuService {
Boolean save(StuInfo stuInfo);
}
serviceImplモジュールにインターフェースの実現類を編纂します。コードは以下の通りです
package com.example.serviceImpl;
import com.example.dao.StuInfoDao;
import com.example.entity.stuEntity.StuInfo;
import com.example.service.StuService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Timestamp;
@Service
@Log4j2
public class StuServiceImpl implements StuService {
@Autowired
private StuInfoDao stuInfoDao;
@Override
public Boolean save(StuInfo stuInfo) {
stuInfo.setStatus(1);
stuInfo.setCreatetime(new Timestamp(System.currentTimeMillis()));
stuInfo.setUpdatetime(new Timestamp(System.currentTimeMillis()));
log.error(" ");
return Boolean.TRUE;
}
}
@Serviceは、インターフェース実現類として表示し、springスキャン注入が可能です。@Log 4 j 2,ログツール
@Autowired、StuInfoDaoを注入します。
webモジュールでは、フロントエンドの呼び出しを要求するために、controlorクラスを作成します。
コードは以下の通りです
package com.example.appdemo.controllor;
import com.example.entity.common.Response;
import com.example.entity.stuEntity.StuInfo;
import com.example.service.StuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/stu")
public class StuInfoControllor {
@Autowired
private StuService stuService;
@PostMapping("/addStu")
public Response<Boolean> addStu(@RequestBody StuInfo stuInfo) {
if (stuService.save(stuInfo)) {
return new Response<>(200, " ", Boolean.TRUE);
} else {
return new Response<>(400, " ", Boolean.FALSE);
}
}
}
スタートクラスのAppdemoApplicationを修正し、スキャンの注釈を追加します。プロジェクトは起動過程で、スプリングは工程内のクラスをスキャンして、自動的にオブジェクトを生成してプログラムの呼び出しに用いますが、プロジェクトの自動スキャン時にはいくつかの種類を無視します。これはスキャンが必要なパケットを明確に指定する必要があります。起動コードは以下の通りです。
package com.example.appdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication(scanBasePackages = "com.example")
@ComponentScan({"com.example"})
@EnableJpaRepositories("com.example")
@EntityScan("com.example.entity")
public class AppdemoApplication {
public static void main(String[] args) {
SpringApplication.run(AppdemoApplication.class, args);
}
}
七、整理、取り付け、運行、テスト八、棚を作る時にぶつかる問題
Error:java:JDK isn't specified for module
エラーが発生しました。これはプロジェクトの親プロジェクトの「.idea」フォルダを削除し、新たに作成を更新すれば解決できます。九、面白い配置
この記事ではIDEAでjavaマルチモジュールプロジェクトを作成する方法について紹介します。より多くの関連IDEAでjavaマルチモジュールプロジェクトの内容を作成します。以前の記事を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。