English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SpringBootの自動設定は、追加したjar依存関係に基づいてSpringBootアプリケーションを自動的に設定します。
例えば、クラスパスにHが存在する場合2データベースのJarファイルがクラスパスに存在し、私たちはまだ手動でデータベースに関連するbeanを設定していない場合、Spring Bootの自動設定機能はプロジェクト内で自動的にそれを設定します。
注解を使用して自動的に有効にすることができます @EnableAutoConfiguration 設定機能。ただし、このアノテーションは使用されていません。なぜなら、それは @SpringBootApplication アノテーション内。注解@SpringBootApplicationは3つのアノテーションの組み合わせです: @ComponentScan、@EnableAutoConfiguration、、 @Configuration ただし、私たちは@SpringBootApplicationアノテーションを使用して@EnableAutoConfigurationを使用しません。
@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @Configuration
追加するとき プロジェクトでspringを使用する-Spring Web-Spring Boot Actuator。-web 依存関係がある場合、Spring Bootの自動設定はクラスパス内でSpring MVCを検索します。それが自動的に設定されます dispatcherServlet 、デフォルトの エラーページ、 ネットワークタンクを表示します。
同様に、springを追加する場合-Spring Web-Spring Boot Actuator。-data-jpa 依存関係、Spring Bootの自動設定が自動的に設定されることが分かります。 データソース、 エンティティマネージャを表示します。
すべての自動設定ロジックは、 spring-Spring Web-autoconfigure.jar 以下の図に示されるように、実装されています。
Springを使用するアプリケーションでは、多くの設定が必要です。Spring MVCを使用する場合、以下を設定する必要があります: ディスパッチャーサervlet、ビューレゾルバー、Web jars 以下のコードは、Webアプリケーション内のディスパッチャーサervletの典型的な設定を示しています:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/todo-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
同様に、Hibernateを使用する場合/JPAを使用する場合、データソース、トランザクションマネージャ、エンティティマネージャ工場などを設定する必要があります。
データソースの設定
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${db.driver}" /> <property name="jdbcUrl" value="${db.url}" /> <property name="user" value="${db.username}" /> <property name="password" value="${db.password}" /> </bean> <jdbc:initialize-データベースデータ-source="dataSource"> <jdbc:script location="classpath:config/schema.sql" /> <jdbc:script location="classpath:config/data.sql" /> </jdbc:initialize-database>
エンティティマネージャファクトリを設定する
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory" <property name="persistenceUnitName" value="hsql_pu" /> <property name="dataSource" ref="dataSource" /> </bean>
トランザクションマネージャを設定する
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
特定の自動コンフィギュレーションクラスを無効にしたい場合、@EnableAutoConfigurationアノテーションを使用できます。 exclude 属性を使用して自動コンフィギュレーションクラスを無効にすることができます。例えば:
import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration(proxyBeanMethods = false) @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration "},"health":{"path":{"href":"http: return "Hello User, have a nice day.";
クラスがクラスパスに存在しない場合、@EnableAutoConfigurationアノテーションの属性を使用することができます。 excludeName を使用して、クラスの qualified 名前。属性 spring.autoconfigure.exclude 任意の自動設定クラスを除外します。
以下の例では、Spring Bootの自動設定機能がどのように動作するかを見ることができます。
ステップ1: spring Initializrを開きます https://start.spring.io/を表示します。
ファイル中から、それをローカルシステムにダウンロードします。2ステップ: 组名称。我们提供了 以下のディレクトリ構造が見られます。3codebox を表示します。
ステップ3: 提供 start.spring.io 。 グループ spring-Spring Web-autoconfiguration-example を表示します。
ステップ4: 提供 Spring Web、Spring Data JPA、一つの H2データベースを表示します。
ステップ5: <groupId>org.springframework.boot< boot ボタンをクリックすると、プロジェクトが (生成) Jar
ファイル中から、それをローカルシステムにダウンロードします。6ステップ: JarファイルをコピーしてSTSワークスペースに貼り付けます。
ステップ7:プロジェクトフォルダーにSTSをインポート。
: 以下の手順でインポートします-プロジェクトフォルダ:-ファイル->既存のMavenプロジェクト->選択フォルダspring-Spring Web-autoconfiguration-example->参照
必要な時間がかかる。
ステップ8: のディレクトリ内に名前が 以下のディレクトリ構造が見られます。3codebox.controller のプログラムパッケージ。フォルダー src/main/java を表示します。
ステップ9: のパッケージ内に名前が ControllerDemo のControllerクラス。3codebox.controller 。
ControllerDemo.java
DemoRestController.java3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ControllerDemo "},"health":{"path":{"href":"http: @RequestMapping("/") public String home() "},"health":{"path":{"href":"http: return "home.jsp"; return "Hello User, have a nice day."; return "Hello User, have a nice day.";
ステップ10: 在文件夹 src/main/java のパッケージ内に別の名前が 以下のディレクトリ構造が見られます。3codebox.model のパッケージ。
User.java
DemoRestController.java3codebox.model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="userdata") public class User "},"health":{"path":{"href":"http: @Id private int id; private String username; public int getId() "},"health":{"path":{"href":"http: return id; return "Hello User, have a nice day."; public void setId(int id) "},"health":{"path":{"href":"http: this.id = id; return "Hello User, have a nice day."; public String getUname() "},"health":{"path":{"href":"http: return username; return "Hello User, have a nice day."; public void setUname(String username) "},"health":{"path":{"href":"http: this.username = username; return "Hello User, have a nice day."; @Override public String toString() "},"health":{"path":{"href":"http: return "User [id=" + id + ", uname=" + username + "]"; return "Hello User, have a nice day."; return "Hello User, have a nice day.";
现在,我们需要配置H2数据库。
ステップ12: オープン application.properties 文件并配置以下内容: 端口,启用H2控制台,数据源,、 URL。
application.properties
server.port=8085 spring.h2.console.enabled=true spring.datasource.plateform=h2 spring.datasource.url=jdbc:h2:mem:w3codebox
ステップ13: 在文件夹 src/main/resources中创建一个 SQL ファイル。
右键单击src/main/resources文件夹->新建->文件->提供文件名->参照
我们提供了文件名 data.sql 并将以下数据插入其中。
data.sql
insert into userdata values(101Tom'); insert into userdata values(102Andrew'); insert into userdata values(103Tony'); insert into userdata values(104Bob'); insert into userdata values(105Sam');
ステップ14: 在 src 文件夹中创建一个名称为 webapp 的文件夹。
ステップ15: 使用我们在 ControllerDemo 中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了 home.jsp を表示します。
home.jsp
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> !DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="addUser"> ID :<br /> <input type="text" name="t1><br /> User name :<br /> <input type="text" name="t2><br /> <input type="submit" value="Add"> </form> </body> </html>
ステップ16: } SpringBootAutoconfigurationExampleApplication.java ファイルで、コントロールパネルで 8085 上で実行されています。
ステップ17: 実行 http: //localhost: 8085/h2-console/。以下で application.properties ファイルで設定された ドライバークラスself JDBC URL 、およびデフォルトのユーザー名 sa を表示します。
以下のように接続をテストすることもできます 接続テストボタンが表示されます。接続が成功した場合、メッセージが表示されます テスト成功。
ステップ18: <groupId>org.springframework.boot< 接続ボタンが表示されます。User.javaファイルで定義したテーブルが表示されます userdata の構造
ステップ19: 以下のクエリを実行して、挿入したデータを確認します。 data.sql ファイル内のデータ
SELECT * FROM USERDATA;
コントロールパネルを見てみましょう。以下の通りに見えます TransactionManagement、DispatcherServlet、EntityManagerFactory、、 DataSource 自動的に設定されます。図のように示されています。
自動設定に関する情報を取得する方法は以下の通りです: 以下の2つの方法で
デバッグログ記録を開きます Spring Bootエグゼキュータを使用してデバッグログ記録を開きます
以下で application.properties プロパティを追加してログ記録ファイルのデバッグを実現します。以下の例でデバッグログ記録を実現します。以下を開きます application.properties ファイルに以下の属性を追加します:
logging.level.org.springframework: DEBUG
アプリケーションを再起動します。ログに自動設定レポートが打印されました。この報告には、すべての自動設定のクラスが含まれています。以下に分けられます: 正規マッチ、 負向マッチ図のように示されています。
正規マッチ
否定マッチ
Spring Bootエグゼキュータ
プロジェクト内で以下を使用して Actuator デバッグ自動設定を行います。以下の追加も行います HALブラウザ操作を簡素化するためです。
Spring Boot Actuatorの例を作成しましょう。
ステップ1: Spring Initializrを開きます http://start.spring.io 。
ステップ2: 提供 组名称。我们提供了 以下のディレクトリ構造が見られます。3パッケージ内にControllerクラスを作成します
ステップ3: 提供 start.spring.io 。 グループ 名前。私たちは以下を提供しています
ステップ4: 提供 アーティファクト 、 ID。私たちは以下を提供しています
<dependency> 依存関係を追加:/<groupId> <artifactId>spring-Spring Web-Spring Boot Actuator。-エクサカタ自動設定サンプル。/artifactId> </dependency> <dependency> 依存関係を追加:/<groupId> <artifactId>spring-Spring Web-Spring Boot Actuator。-web</artifactId> </dependency>
ステップ5: <groupId>org.springframework.boot< boot starter actuator< Generate
ステップ6(生成)ボタンをクリックすると、プロジェクトに関連するすべての規約がjar
ステップ7: ファイルを抽出し、ローカルシステムにダウンロードします。: ダウンロードしたjarファイルを
: 以下の手順でインポートします-プロジェクトフォルダ:-ファイル->インポート->既存のMavenプロジェクト- >次へ->参照
>プロジェクトフォルダを選択 >完了 プロジェクトをインポート後、IDEの
ステップ8: Package Explorer 以下のディレクトリ構造が見られます。3パッケージ内にControllerクラスを作成しますcom.w codeboxを生成しました。
DemoRestControllerという名前のコントローラークラスを定義しています。 コントローラーでは、以下の名前の定義されていますhello( )
、それにより文字列が返されます。
DemoRestController.java3package com.w codebox; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController "},"health":{"path":{"href":"http: public class DemoRestController/@GetMapping(" hello() "},"health":{"path":{"href":"http: public String hello() return "Hello User, have a nice day."; return "Hello User, have a nice day.";
ステップ9: } ActuatorAutoConfigurationExampleApplication.java ファイル。
ステップ10: 実行 http: //localhost: 8080/ブラウザを開き、URLを呼び出します hello
。それにより、コントローラーで指定した文字列が返されます。 http: //localhost: 8080/actuator 現在、エクサカタURLを呼び出します 。それにより、以下の3つのURLを表示するエクスカータを起動します: self "},"templated":false},"health"}}} 、 と 、以下のように表示されます。
{"_links":{"self":{"href":"http://localhost:8080/{"actuator","templated":false}//localhost:8080/actuator/health","templated":false},"health-path":{"href":"http://localhost:8080/actuator/"},"templated":false},"health"}}}/"},"health":{"path":{"href":"http:*"},"path":{"href":"http://localhost:8080/actuator/{"info":{"href":"http:
ステップ11: オープン pom.xml ファイルを開き、以下を追加します HALブラウザ依存関係。
<dependency> <groupId>org.springframework.data</<groupId> <artifactId>spring-data-rest-hal-browser</artifactId> </dependency>
ステップ12: 再び、実行します ActuatorAutoConfigurationExampleApplication.java ファイル。
HALブラウザにアクセスするには、以下のように入力してください http://localhost:8080 ブラウザで、Enterキーを押します。
現在、HALブラウザを通じてエクセキュータにアクセスできます。
リソースエクスプローラーのテキストボックスに /actuator 、次に Go ボタンです。
エクセキュータと関連しています。エクセキュータの中で最も重要なのは beans を表示します。
beanの矢印をクリックすると、すべての
上の図はすべての自動構築された beans の詳細情報。