SpringBootはSpringMVCのアップグレードであり、エンコード、構成、展開、監視が簡単です。
マイクロサービス
Microservicesは、大規模な単一のアプリケーションとサービスを多数のサポートされているマイクロサービスに分割する新しいソフトウェアアーキテクチャです。マイクロサービス戦略により、アプリケーション全体のスタック全体ではなく単一のコンポーネントをスケーリングできるため、サービスレベルのプロトコルを満たすことができます。
Springは、マイクロサービスのコンポーネントの完全なセット-Sprinccloundを提供し、Spirngbootは基礎です。
最初のスプリングブートプログラム
ここで使用される開発ソフトウェアはIntellijのアイデアであり、これはEclipseとそれほど違いはなく、よりクーラーインターフェイスとより強力な機能を備えています。 Android StudioはIntellijに基づいて開発されています。私は以前にAndroidスタジオを使用したことがありますが、両方のインターフェイスはほぼ同じです。
Intellij Ideaの公式ウェブサイト:http://www.jetbrains.com/idea/
Maven、Tomcat、JDKを構成した後、使用できます
Mavenによって構成された中央倉庫のAlibabaクラウド画像、このアドレスでJARパッケージをダウンロードする速度で、誰がそれを使用しているかを知っています!
setting.xml
.. <mirrors> <mirror> <id> alimaven </id> <name> aliyun maven </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <mirrorof>中央</mirrorof> </mirror>。 。
アイデアでスプリングブートプロジェクトを作成します
私のアイデアバージョン:Intellij Idea 2016.3.1
プロジェクト構造は次のとおりです。
プロジェクトのデフォルトのmaven pom.xmlファイル
pom.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 <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループcom.jxust </groupid> <artifactid> spirngbootdemo </artifactid> <バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> spirngbootdemo </name> <説明>スプリングブート</description> <parent> <parent> <parent> org.springframework.boot </groupid> groupid> <artifactid> spring-boot-starter-parent </artifactid> <version> 1.4.2.release </version> <relativepath/> <! - lookup parent from repository-> </parent> <properties> <build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> </properties> <dependencies> <shipencies> <dependency> <依存関係> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dependency> </dependencies> <burting> <プラグイン> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
spirngbootdemoApplicationの主な方法を実行すると、実行を開始できます。
他のスタートアップ方法については、ビデオチュートリアルhttp://www.imooc.com/learn/767/を参照してください。
コンソール出力:
「C:/プログラムファイル/Java/JDK1.8.0_91/bin/Java」....。 ____ __ __ / /// ___'_ __ __ _(_)_ ___ ____________ / / / / / / /(() / ___ | '_ |' _ | / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | .__ || | _ | | _ | | _/__、| / / / / / ======================================================================(_ / _ / _ / :: spring boot:(v1.4.2.Release)2016-12-16 14:56:52.083情報Startup2016-12-16 14:56:52.215 Info 15872 --- [Main] SBCettomCatemdedDedServletContainer:Tomcatはポートで開始されました:8080(HTTP)2016-12-16 14:56:52.255情報15872ポートで開始:8080(HTTP)2016-12-16 14:56:52.255 INFO 15872 --- [Main] SBCettomCatemBededDedServletContainer:Tomcatはポートで開始されました:8080(http)2016-12-16:56:52.255 Info 15872-- sbcettomcatembeddedservletcontainer:Tomcatはポートで開始されました:8080(http)2016-12-16 14:56:52.255 Info 15872 --- [main] com.jxust.spirngbootdemoApplication:Spit Starting SpirngbootdemoApplication
ここから、トムキャットのポート番号を見ることができます。カスタムコントローラーがないため、ビューはまだありません。 Hello Springbootを出力するビューを作成しましょう。
コントローラーパッケージの下にあるHelloControllerを作成します
hellocontroller.java
パッケージcom.jxust.controller; Import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.restController;/** *作成@RequestMapping( "/hello")public string say(){return "hello springboot!"; }}@RestController spring4以降の新しいアノテーション。 JSONを返すには、 @ResponseBodyが@Controllerと協力する必要があることがわかります。今、1つは最高の2つです
http:// localhost:8080/hello flowserに入力して、文を出力してくださいhello springboot!
カスタムプロパティ構成
Application.Propertiesファイルが使用されます
ポート番号とアクセスプレフィックスを構成します
Application.Propertiesserver.port = 8081Server.Context-Path =/SpringBoot
.propertiesフォーマットファイルを使用することに加えて、.yml形式の構成ファイル(推奨)を使用することもできます。
Application.yml
元のApplication.Propertiesファイルを削除します
フォーマットに注意してください。スペースはありません
構成ファイルで属性値を取得します
また、構成ファイルでデータを構成して、コントローラーで取得することもできます。たとえば、次のこともできます。
Application.yml
サーバー:ポート:8081コンテキストパス: /springbootname:xiaopang
HelloControllerは、構成ファイルに値を取得します
hellocontroller.java
.... @RestControllerPublic Class Hellocontroller {@value( "$ {name}")private string name; @RequestMapping(value = "/hello"、method = requestmethod.get)public string say(){return name; }}名前の返された値
構成ファイルの値構成方法の多様化
構成ファイルの値は、次のような複数または結合することができます。
Application.yml
名前:Xiaopang Age:22またはName:Xiaopang Age:22Content: "name:$ {name}、age:$ {age}" or server:port:8081 context-path: /springbootperson:name:xiaopang age:22最初の2つの構成は値を取得するのと同じ方法ですが、この方法では、人には対応する2つのプロパティがあり、この方法で処理する必要があります。
personProperties.java
パッケージcom.jxust; import org.springframework.boot.context.properties.configurationProperties; import org.springframework.stereotype.component;/** * by peng * time民間整数年齢; public string getName(){return name; } public void setName(string name){this.name = name; } public Integer getage(){return age; } public void Setage(整数年齢){this.age = age; }}alt+挿入ショートカットキープロンプトを挿入して、ゲッターとセッターを生成します
pom.xmlは、警告を処理するために次の依存関係を追加する必要があります
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-configuration-processor </artifactid> <optional> true </optional> </dependency>
hellocontroller.java
パッケージcom.jxust.controller; Import com.jxust.personProperties; Import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bind.Bintation.Requestmeth org.springframework.web.bind.annotation.restController;/** *作成されたPeng *時間:2016/12/15 20:55 */ @restcontrollerpublic class hellocontroller {@autowired private personproperties personperties; @RequestMapping(value = "/hello"、method = requestmethod.get)public string say(){return personProperties.getName()+personProperties.getage(); }}構成ファイルapplication.yml複数の構成セットについて
IL8Nファイルの国際化と同様に、i18n_en_us.propertiesとi18n_zh_cn.properties
これにより、頻繁な構成変更の恥ずかしさが解決できます
使用する構成ファイルを決定するのは、Application.yml構成ファイル次第です。
Application.yml
春:プロファイル:アクティブ:a
Application-A.yml
サーバー:ポート:8081コンテキストパス: /springbootperson:name:xiaoleiage:21
Application-B.Iml
サーバー:ポート:8081コンテキストパス: /springbootperson:name:xiaopang age:22
Springbootは、追加、削除、および変更をチェックするために変更を加えます
完全なプロジェクト構造
コントローラーの使用
コントローラーの使用
@Controller CHUはHTTPリクエストを処理します
@restcontroller new annotation spring4以降、jsonを返すには@responsebodyが@controllerと協力する必要があることがわかります
@RequestMapping URLマッピングを構成します
休憩スタイルのリクエスト
コントローラーのメソッドの注釈用
@RequestMapping(value = "/hello"、method = requestmethod.get)@requestmapping(value = "/hello"、method = requestmethod.post)@requestmapping(value = "/hello"、method = requestmethod.delete)@RequestMapping(value = "/hello"、methodmethod.tut)
スプリングブートは、上記の注釈を簡素化します
@getMapping(value = "/girls")@postmapping(value = "/girls")@putmapping(value = "/girls/{id}")@deletemapping(value = "/girls/{id}")ブラウザはさまざまな方法でリクエストを送信する必要があり、httprequesterプラグインをインストールでき、Firefoxブラウザーはこのコンポーネントを直接検索してインストールできます。
Spring-Data-JPa
JPAのフルネームJava Persistence API.jpaは、JDK 5.0アノテーションまたはXMLを介したオブジェクト関連テーブルのマッピング関係について説明し、実行中のエンティティオブジェクトをデータベースに継続します。
Hibernate3.2+、TopLink 10.1.3、およびOpenJPAはすべてJPAの実装を提供します。
JPAを使用してMySQLデータベースを作成します
pom.xmlはJPAおよびMySQL依存関係を追加します
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-data-jpa </artifactid> </dependency> <dependency> <mysql </groupid> <artifactid> mysql-connector-java </artifactid> </depency>
JPAとデータベースの構成
Application.yml
スプリング:プロファイル:アクティブ:データソース:ドライバークラス名:com.mysql.jdbc.driver url:jdbc:jdbc:mysql://127.0.0.1:3306/db_person username:ルートパスワード:ルートJPA:hibernate:ddl-auto:show-sql:for
フォーマットが重要です
DB_Personデータベースを手動で作成する必要があります
データテーブルに対応する個人エンティティクラスを作成する
person.java
パッケージcom.jxust.entity; import javax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.id;/** *作成されたpeng *時間:2016/12/16 17:56 */ @entitypublic class persenプライベート文字列名;民間整数年齢; //コンストラクターはpublic Person(){} public Integer getId(){return id;である必要があります。 } public void setid(integer id){this.id = id; } public string getname(){return name; } public void setName(string name){this.name = name; } public Integer getage(){return age; } public void Setage(整数年齢){this.age = age; }}プロジェクトを実行した後、データベースを確認すると、テーブルの人が自動的に作成されます
mysql> db_person; database chandermysql> descを使用します person;+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | null | |+------------------------+---------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
次に、人のテーブルを追加、削除、変更、チェックすることができます
コントローラーPersonController.javaを作成します
最初に、DAOパッケージの下にあるインターフェイスPersonRepositoryを作成します。 PersonControllerは、JParePositoryから継承されたメソッドを呼び出して、データベースとの相互作用を実現します。
このPersonRepositoryインターフェイスの関数は、SSMフレームワークのDAOレイヤーのインターフェイス関数に似ています。 SSMフレームワークでは、サービスレイヤーは、このインターフェイスを介してMyBatisデータベースマッピングファイル(.xml)で対応するSQLステートメントを間接的に実行し、データベースの追加、削除、変更、検索の操作を実行します。 (MapperはDAOインターフェイスを自動的に実装します)
personrepository.java
パッケージcom.jxust.dao; Import com.jxust.entity.person; Import org.springframework.data.jpa.repository.jparepository;/** *作成された時間 *
PersonController.java
パッケージcom.jxust.controller; Import com.jxust.dao.personRepository; Import com.jxust.entity.person; import org.springframework.beans.factory.annotation.autowired; Import org.springframework.web.bind.annotation.getMapping; org.springframework.web.bind.annotation.restcontroller; import java.util.list;/** * by peng * time:2016/12/16 18:04 */ @restcontrollerpublic class personcontroller {@autowired personRepository personrepotiontory; @getMapping(value = "/person")private list <senther> personlist(){return personrepository.findall(); }}データベースに2つのデータを追加します
mysql> select * from person;+---+-----+------+| ID |年齢|名前|++----+------+-------+| 1 | 23 |シャーロット|| 2 | 21 | ma dongmei |+----+-------+------+2行セット(0.04秒)
プロジェクト実行リクエストを開始http:// localhost:8081/springboot/person
コンソールによるSQLステートメント出力:
hibernate:person0_.idをid1_0_、person0.age as age2_0_、person0.name as name3_0_ from person0_
追加、削除、変更、チェックのその他の方法
PersonController.java
..../** *人を追加 * * @param name * @param age * @return */@postmapping(value = "/person")public person personadd( @requestparam( "name")string name、 @requestparam( "age")integer age){person person = new person(); person.setname(name); person.setage(age); return personrepository.save(person); }/** * Query A Person * * @param id * @return */@getMapping(value = "/person/{id}")public person personfindone( @pathvariable( "id")integer id){return personrepository.findone(id); }/** *人を削除 * * @param id */@deletemapping(value = "/person/{id}")public void persondelete( @pathvariable( "id")integer id){personeRepository.delete(id); }/** *人を更新 * * @param id * @param name * @param age * @return */@putmapping(value = "/person/{id}")public person personupdate( @pathvariable( "id")integer id、 @requestparam( "name")文字列= @requestparam( ")integer person(); person.setId(id); person.setname(name); person.setage(age); return personrepository.save(person); }対応するリクエスト方法は次のとおりです。
ユーザーのクエリ:
ユーザーを追加します
ユーザーを削除する(返品値なし)
ユーザーを更新します
それで、私は年齢に基づいてチェックできますか?答えは、まだ不可能だということです
コンソールステートメントから、SQLステートメントがIDに基づいて照会されていることがわかります
hibernate:person0_.idをid1_0_0_、person0.age as age2_0_0_、person0.name as name3_0_0_ from person0_ where person0_.id =?
年齢別のクエリ
PersonRepository findByage(整数年齢)にメソッドを追加する
パブリックインターフェイスPersonRePository拡張jparePository <person、integer> { / ** * query by age * method name sixed findbyage * @param age * / public list <person> findbyage(integer age);}対応するクエリメソッドをPersonControllerに追加します
..../** *年齢別 * @param age * @return */@getmapping(value = "/person/age/{age}")public list <serper> personlistbyage( @pathvariable( "age")integer age){return personrepository.findbyage(age); }リクエストを入力してくださいhttp:// localhost:8081/springboot/person/age/23
コンソール出力SQLステートメント:
hibernate:person0_.idをid1_0_、person0.ageとしてage2_0_、person0.age as person0_ where person0.age =?
トランザクション管理
2つのSQLステートメントが同時に1つの方法で実行されます。 1つのSQLステートメントが正常に実行され、もう1つのSQLステートメントが失敗しないようにするために、トランザクション管理が導入されます。メソッドを追加するには、@transactionalトランザクション注釈が必要です。
トランザクションは、データベースデータの整合性と一貫性を確保します
personservice.java
PersonControll
パッケージcom.jxust.service; Import com.jxust.dao.personRepository; Import com.jxust.entity.person; Import org.springframework.beans.factory.annotation.autowired; Import org.springframework.stereototy.service; immort.transaction.transaction. ** ** ** ** ** ** ** ** ** Keng.transactional 2016/12/16 19:30 */ @ServicePublic Class PersonService {@autowired private personrepository personrepository; / ***トランザクション管理テスト* 2つのデータが同時に成功するか、同時に成功しません*データベースデータの整合性と一貫性を確認*/ @Transactional public void inserttwo(){person persona = new Person(); persona.setname( "qiuya"); persona.setage(19); personrepository.save(ペルソナ); System.out.print(1/0); Person personb = new person(); personb.setname( "mengtejiao"); personb.setage(25); personrepository.save(personb); }}ERでテストします
... @autowired private pernosservice personservice; .../***トランザクションテスト*/@PostMapping( "/person/2")public void persontwo(){personservice.inserttwo(); }プロジェクトを再実行してリクエスト投稿方法を実行しますhttp:// localhost:8081/springboot/person/2
最初のデータはデータベースに追加されず、トランザクション管理があることを示しています
Complete PersonController.java、personrepository.javaおよびpom.xml
PersonController.java
パッケージcom.jxust.controller; Import com.jxust.dao.personRepository; Import com.jxust.entity.person; Import com.jxust.service.personservice; import org.springframework.beans.factory.annotation.autowired; Import framework.web.bind.annotation java.util.list;/** * pengによって作成された * time:2016/12/16 18:04 */ @restcontrollerpublic class personcontroller {@autowired personrepository personeRepository; @Autowired Private PernosService PersonService; /** *すべての担当者のリスト * * @return */@getMapping(value = "/person")private list <serson> personlist(){return personrepository.findall(); }/** * add a sean * * @param name * @param age * @return */@postmapping(value = "/person")public person personadd(@requestparam( "name")string name、 @requestparam( "age")integer age){person person = new person(); person.setname(name); person.setage(age); return personrepository.save(person); }/** * Query A Person * * @param id * @return */@getMapping(value = "/person/{id}")public person personfindone( @pathvariable( "id")integer id){return personrepository.findone(id); }/** *人を削除 * * @param id */@deletemapping(value = "/person/{id}")public void persondelete( @pathvariable( "id")integer id){personeRepository.delete(id); }/** *人を更新 * * @param id * @param name * @param age * @return */@putmapping(value = "/person/{id}")public person personupdate( @pathvariable( "id")integer id、 @requestparam( "name")文字列= @requestparam( ")integer person(); person.setId(id); person.setname(name); person.setage(age); return personrepository.save(person); }/** *年齢別 * @param age * @return */@getMapping(value = "/person/age/{age}")public list <serper> personlistbyage( @pathvariable( "age")integer age){return personrepository.findbyage(age); }/***トランザクションテスト*/@postmapping( "/person/2")public void persontwo(){personservice.inserttwo(); }}personrepository.java
パッケージcom.jxust.dao; Import com.jxust.entity.person; Import org.springframework.data.jpa.repository.jparepository; Import java.util.list;/** *作成された時間 *年齢別のクエリ *メソッド名固定 * @param age * @return */ public list <person> findbyage(整数年齢);}
pom.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 <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループcom.jxust </groupid> <artifactid> spirngbootdemo </artifactid> <バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> spirngbootdemo </name> <説明>スプリングブート</description> <parent> <parent> <parent> org.springframework.boot </groupid> groupid> <artifactid> spring-boot-starter-parent </artifactid> <version> 1.4.2.release </version> <relativepath/> <! - lookup parent from repository-> </parent> <properties> <build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> </properties> <dependencies> <shipencies> <dependency> <Dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-test </artifactid> <scope> test </scope> </dependency> <sependency> <shiptency> org.springframework.boot </group> spring-boot-boot-con-figurationturationprocestes <optional> true </optional> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-data-jpa </artifactid> </dependency> <依存関係> <依存関係> mysql </groupid </Dependency> </Dependency> </build> <plugins> <plugin> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
要約します
上記は、編集者によって導入されたIntellij Idea Springbootデータベースの追加、削除、変更、検索例の詳細な説明です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!