English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot 自動構築

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自動設定サンプル

以下の例では、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 のパッケージ。

ステップ11: のパッケージ内に   以下のディレクトリ構造が見られます。3codebox.model クラス内に名前が   User のクラス。

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 の詳細情報。