Java Spring APIをvscode & postgresで作成します
18893 ワード
Javaは、すべての時間と春のWebアプリケーションを含むアプリケーションのすべてのタイプを構築するための最も人気のフレームワークの最も人気のあるプログラミング言語の一つです.このチュートリアルでは、エディタとしてvscodeを使用した非常に基本的なAPIを構築します.
必要条件 Java OpenJDK 11以上 VSCODE VSCode拡張モジュール: Javaスプリング拡張パック
構文ハイライトのためのどんなJava拡張でもより高いインストールと実行 のPostgres 12
新しいプロジェクトの初期化
コマンドパレットを選択し、“新しいMavenプロジェクトを初期化”を選択します春のバージョンを選択し、私は2.4.3 を選択しています言語(Java、KotlinまたはGroovy)を選択します. groupidを入れて、私はちょうど私の名前を使用しています.「アレックス.マーセド」 ProjectIDを入れて、私はデフォルトを続けました パッケージをパッケージングタイプ として選択しますはJavaバージョン11 を選びましたウェブアプリケーション を構築するためのSpring Web依存性を選択します. PostgresqlドライバをPostgres に接続します.春のデータJPAは、我々のORM として行動しますプロジェクトを空のフォルダ に生成します
データベース設定
次の設定をsrc/main/resources/applicationに追加します.プロパティ
申請書
アプリケーションはsrc/main/java/アレックス/merced/にあります( Groupidとして選んだものによって異なります).このフォルダでは、デモと呼ばれるフォルダーが表示されます(または、プロジェクトが何であれ)、このフォルダにアプリケーションを初期化するファイルがあります.
私たちはいくつかのコントローラを作成したいので、このフォルダ(私/src/main/java/アレックス/merced/demo)のコントローラフォルダを作成します.
コントローラのフォルダで、コントローラと呼ばれるファイルを作成します.自動生成するJava.
エンティティの作成
同じフォルダでは、demoapplication.Javaとコントローラフォルダが有効になったら、エンティティフォルダーを作成しましょう.エンティティは、データベースと対話するためのモデルクラスです.Hibernate/JPAは、私たちのためのエンティティ(後でリポジトリを作成した後)に基づいてテーブルを作成します.
実体/人.ジャバ
リポジトリの作成
それで、実体は我々のデータのためのスキーマとして働きます、現在、倉庫は我々のコードとテーブルの間のインターフェースとして作用します.新しいフォルダのデモ/リポジトリを作成し、そこにPersonRepositoryと呼ばれるファイルを作成します.ジャバ.
APIの作成
我々は、データベースとの対話に必要なすべての作品を構築しました.今私たちは人のためのコントローラを構築する必要があるので、コントローラのフォルダでは、PersonControllerを作成します.
APIのテスト
あなたのすべてのルートをテストしてください、そして、我々は展開に着きます!
Herokuへの配備
プロジェクトのルートにある(POM . xmlの場合)はシステムと呼ばれるファイルを作成します.次の行のプロパティ(Javaバージョンの調整).
アプリケーションのプロパティを更新しますので、データベースのURLを
コミットし、Githubにプッシュします.com Herokuに行き、新しいプロジェクトを作成する 下にが配備されます は、あなたのレポを接続します 自動展開を有効にする 手動展開 のトリガー
この時点で、プロジェクトを構築し、自動的にデータベースを提供する必要がありますので、あなたのAPIをテストすることができますし、それが動作する必要があります!Java SpringでAPIビルドを展開しました.
必要条件
新しいプロジェクトの初期化
コマンドパレットを選択し、“新しいMavenプロジェクトを初期化”を選択します
データベース設定
次の設定をsrc/main/resources/applicationに追加します.プロパティ
# Database Settings
spring.datasource.url=jdbc:postgresql://localhost:5432/javaspringtest
spring.datasource.username=test5
spring.datasource.password=test5
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
# Hibernate ddl auto (create, create-drop, validate, update)
# Allows for auto creation of tables
spring.jpa.hibernate.ddl-auto = update
申請書
アプリケーションはsrc/main/java/アレックス/merced/にあります( Groupidとして選んだものによって異なります).このフォルダでは、デモと呼ばれるフォルダーが表示されます(または、プロジェクトが何であれ)、このフォルダにアプリケーションを初期化するファイルがあります.
私たちはいくつかのコントローラを作成したいので、このフォルダ(私/src/main/java/アレックス/merced/demo)のコントローラフォルダを作成します.
コントローラのフォルダで、コントローラと呼ばれるファイルを作成します.自動生成するJava.
package alex.merced.demo.controllers;
public class Controller {
}
そのような最も基本的なルートを作りましょう.package alex.merced.demo.controllers;
//Imports, vscode should auto add these as needed
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
//This annotation tells Spring this is a RestAPI Controller
@RestController
public class Controller {
// This tells spring this function is a route for a get request to "/"
@RequestMapping(value="/", method=RequestMethod.GET)
public String Hello() {
// The response will include the return value
return "Hello World";
}
}
この後、アプリケーションを実行してローカルホスト上でそれを訪問するためにF 5を押すことができるはずです.エンティティの作成
同じフォルダでは、demoapplication.Javaとコントローラフォルダが有効になったら、エンティティフォルダーを作成しましょう.エンティティは、データベースと対話するためのモデルクラスです.Hibernate/JPAは、私たちのためのエンティティ(後でリポジトリを作成した後)に基づいてテーブルを作成します.
実体/人.ジャバ
package alex.merced.demo.entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Person {
// MODEL ID FIELD
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
//Model Specific Properties
public String name;
public Integer age;
//constructor
public Person (){
}
public Person(String name, Integer age){
this.name = name;
this.age = age;
}
//getters
public Long getId(){
return this.id;
}
public String getName(){
return this.name;
}
public Integer getAge(){
return this.age;
}
//setters
public void setId(Long id){
this.id = id;
}
public void setName(String name){
this.name = name;
}
public void setAge(Integer age){
this.age = age;
}
}
リポジトリの作成
それで、実体は我々のデータのためのスキーマとして働きます、現在、倉庫は我々のコードとテーブルの間のインターフェースとして作用します.新しいフォルダのデモ/リポジトリを作成し、そこにPersonRepositoryと呼ばれるファイルを作成します.ジャバ.
package alex.merced.demo.repositories;
import org.springframework.data.jpa.repository.JpaRepository;
import alex.merced.demo.entities.Person;
// We create our repository, the <> typing defines the entity class acting as a schema, and type of the ID
public interface PersonRepository extends JpaRepository<Person, Long> {
}
APIの作成
我々は、データベースとの対話に必要なすべての作品を構築しました.今私たちは人のためのコントローラを構築する必要があるので、コントローラのフォルダでは、PersonControllerを作成します.
package alex.merced.demo.controllers;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import alex.merced.demo.repositories.PersonRepository;
import java.util.List;
import alex.merced.demo.entities.Person;
@RestController
public class PersonController {
// Property to hold our repository
public PersonRepository People;
// Constructor that receives the repository via dependency injection
public PersonController(PersonRepository people){
this.People = people;
}
// Get to /people that returns list of people
@GetMapping("/people")
public List<Person> getPeople(){
return People.findAll(); // Returns all people!
}
// Post to /people, takes in request body which must be of type Person
@PostMapping("/people")
public List<Person> createPerson(@RequestBody Person newPerson){
People.save(newPerson); //creates new person
return People.findAll(); // returns all cats
}
// put to /people/:id, takes in the body and url param id
@PutMapping("/people/{id}")
public List<Person> updatePerson(@RequestBody Person updatedPerson, @PathVariable Long id){
// search for the person by id, map over the person, alter them, then save
People.findById(id)
.map(person -> {
person.setName(updatedPerson.getName());
person.setAge(updatedPerson.getAge());
return People.save(person); // save and return edits
});
return People.findAll(); // return all people
}
// delete request to /people/:id, deletes person based on id param
@DeleteMapping("/people/{id}")
public List<Person> deleteCat(@PathVariable Long id){
People.deleteById(id);
return People.findAll();
}
}
APIのテスト
あなたのすべてのルートをテストしてください、そして、我々は展開に着きます!
Herokuへの配備
プロジェクトのルートにある
java.runtime.version=11
# Database Settings
# spring.datasource.url=jdbc:postgresql://localhost:5432/javaspringtest
spring.datasource.url=${DATABASE_URL}
# spring.datasource.username=test5
# spring.datasource.password=test5
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
この時点で、プロジェクトを構築し、自動的にデータベースを提供する必要がありますので、あなたのAPIをテストすることができますし、それが動作する必要があります!Java SpringでAPIビルドを展開しました.
Reference
この問題について(Java Spring APIをvscode & postgresで作成します), 我々は、より多くの情報をここで見つけました https://dev.to/alexmercedcoder/create-java-spring-api-with-vscode-postgres-0-to-deploy-142テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol