springbootプロジェクトを使用して開発する場合、リリースが保守のための運用と保守を容易にするために、データベース構成情報などの特別なファイルで構成することをお勧めします。以下の方法は、誰もが学ぶことができるように提供されています。
目次
一、@ ConfigurationProperties
機能:このクラスのすべての属性を構成ファイル内の関連する構成にバインドするようにSpringBootに指示します。
これは私の他のブログで、この注釈の基本的な使用法を説明しています。
リンク:関連する説明。
2、@ Value
application.propertiesの場合、ymlファイルを使用することもできます。
ここにデータベースリンク情報を入力します
datasource.url=123
datasource.username=456
datasource.password=789
datasource.gw-url=127.0.0.1
データベース情報を格納するテーブル。ここでは、データベース情報をコンテナーに挿入し、使用時にコンテナーから直接取得します。
@Component
public class DruidDBConfig {
@Value("${datasource.url}")
private String url;
@Value("${datasource.username}")
private String username;
@Value("${datasource.password}")
private String password;
@Value("${datasource.gw-url}")
private String gwUrl;
}
junitテストは、構成ファイルによって挿入された値を正常に取得しました。
実際の原則は、xml内のBeanと同様に、setメソッドに依存してBean値を割り当て、コンテナーに格納することです。
<bean class="Person">
<property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>
<bean/>
3つ目は、@ ConfigurationPropertiesと@Valueバインディングの違いです。
1.緩い製本:
これはこぶの命名を指します。
@ConfigurationPropertiesメソッドを使用する場合:プロパティに記述されたperson.last-name、およびこの方法で記述されたjava private String lastName;のプロパティ名は、引き続き値を挿入できますが、@ Valueアノテーションはそうではありません。
2.ゲームのサポート
Spring式言語であるSpEL(Spring式言語)は、JSPのELよりも強力な式言語です。SpELを要約すると、実行時にデータ、特に配列リストデータをクエリおよび操作できるため、コードの量を減らし、コード構造を最適化できます。
@Value("#{表达式}")
public String arg;
@Value("#{11*2}")
private Integer age;
3.JSR303データ検証
JSR-303はJAVAEE 6のサブ仕様であり、Bean Validationと呼ばれ、公式のリファレンス実装はHibernateValidatorです。
この実装は、HibernateORMとは何の関係もありません。JSR 303は、JavaBeanのフィールドの値を検証するために使用されます。
@Validatedアノテーションをクラスに追加してから、検証アノテーションを有効にします。次に、@ Emailなどの彼の特別な注釈のいくつかを使用できます
4.複雑なタイプの包装
@ConfigurationPropertiesは、マップやリストなどのコレクションに値を割り当てることができますが、@ Valueは割り当てません。
5.まとめ
3、@ PropertySource
機能:指定された構成ファイルをロードします;
上記の2つの注釈はインジェクション値であり、値はインジェクションされる前にアプリケーションのメイン構成ファイルで構成されます。
@PropertySourceを使用して、いくつかの固定情報を構成ファイルに構成できます。
@ConfigurationPropertiesおよび@Valueとともに使用できます。
詳細な使用法:
DruidDBConfig.propertiesを作成します
datasource.url=123
datasource.username=456
datasource.password=789
datasource.gw-url=127.0.0.1
package com.atguigu.springboot.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource(value = {
"classpath:DruidDBConfig.properties"})
public class DruidDBConfig {
@Value("${datasource.url}")
private String url;
@Value("${datasource.username}")
private String username;
@Value("${datasource.password}")
private String password;
@Value("${datasource.gw-url}")
private String gwUrl;
@Override
public String toString() {
return "DruidDBConfig [url=" + url + ", username=" + username + ", password=" + password + ", gwUrl=" + gwUrl
+ "]";
}
}
junitテストはまだ値を取得できます
4、@ ImportResource
一部の友人は、使用中に彼と@PropertySourceの違いを常に混乱させます。
@ImportResource関数:Spring構成ファイルをインポートして、構成ファイルのコンテンツを有効にします。
このアノテーションに似た別の@Importがあります。彼はクラス構成ファイルを直接ロードでき、このアノテーションがロードされたクラスはIOCコンテナーに直接格納されます。
@ImportResourceを使用してxml構成ファイルをロードできます
Springのxml構成ファイルを有効にする場合は、それをロードします。@ ImportResourceは構成クラスでマークされており、スタートアップクラスも可能です。
@ImportResource(locations = {
"classpath:beans.xml"})
导入Spring的配置文件让其生效
Spring構成ファイルを書き込む
<?xml version="1.0" encoding="UTF‐8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring‐beans.xsd">
<bean id="helloService" class="com.gzl.springboot.service.HelloService"></bean>
</beans>