問題タブ [property-placeholder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - String から Integer への @Value アノテーション タイプのキャスト
値の出力を整数にキャストしようとしています:
上記はエラーをスローします
私も試してみました@Value("(java.lang.Integer)${api.orders.pingFrequency}")
Google はこの件についてあまり語っていないようです。この値が使用されているすべての場所でこの値を解析するのではなく、常に整数を処理したいと考えています。
回避策
セッターメソッドを使用して変換を実行することが回避策になる可能性があることは理解していますが、Spring で変換できるのであれば、Spring について何か学びたいと思います。
spring - context:property-placeholder プロパティ Bean を参照する方法
Spring コンテキストには、この既存のプロパティ ローダー構成があります。
そして、Beanを参照するhedgingProperties
Beanがあります
複数のプロパティ ファイルからロードするようにコンテキストをリファクタリングし、プロパティの定義が重複しないようにしています。私の最初の試みは、上記の2つの代わりにこのBeanを使用することです
hedgingProperties
しかし、使用時にBeanへのエイリアスまたは参照を保持するにはどうすればよいcontext:property-placeholder
ですか?
spring - の範囲と階層的なコンテキストで
読みました:
Spring MVC の ApplicationContext と WebApplicationContext の違いは何ですか?
<context:component-scan /> がディスパッチャ コンテキストではなくアプリケーション コンテキストにある場合、@RequestMapping アノテーションが機能しない(これについては後で詳しく説明します)
他にもいくつかありますが、これらのどれも質問に答えていません:
Spring MVC アプリケーションの ROOT コンテキストに存在する場合、スコープが<context:component-scan.../>
制限されるのはなぜですか?
私の理解では、指定されたパッケージ内のすべてのクラスのスキャンが発生し、ステレオタイプ化された Bean@Component
またはそのサブステレオタイプ ( @Repository
、@Service
および@Controller
) のいずれかがインスタンス化されます。
与えられた:
applicationContext.xml (ルート コンテキスト)
main-servlet.xml (サーブレット コンテキスト)
com/myproject/web/MainController.java
Spring のドキュメントには、ルート コンテキストでインスタンス化されたすべての Bean が共有され、個々のサーブレット アプリケーション コンテキストで使用できると記載されています。したがって、<context:...>
ルート コンテキストでの 2 つの宣言により、サーブレット コンテキストで表示される Bean が生成されます。しかし、そうではないようです。サーブレットのコンテキストで<context:component-scan.../>
両方を繰り返す必要があります。<context:property-placeholder.../>
<context:component-scan.../>
サーブレット コンテキストでを省略すると、
@Controller
が解決されなかったことを示します。
処理されていないプロパティ参照を使用<context:property-placeholder.../>
した注釈の結果を省略すると、私の場合、いくつかの壊れたリンクが発生します。@Value
これらの<context:.../>
ディレクティブは両方とも Bean のインスタンス化につながるため、ドキュメントとは正反対に、Bean が子コンテキストで表示されない理由について混乱しています。また、component-scan
ステートメントが 2 つあると、コントローラー Bean が 2 回インスタンス化されることはありませんか?
<context:component-scan /> がディスパッチャ コンテキストではなくアプリケーション コンテキストにある場合、@RequestMapping アノテーションが機能しないことに関しては<mvc:annotation-driven />
、アプリ コンテキストにあり、ここでの回答では 2 つのcomponent-scan
ステートメントが必要な理由が説明されていません。
「魔法」がどのように機能するかを完全に理解し、何かを微調整したときにどのように動作するかを予測できない限り、「魔法」を使用するのは本当に不快です。したがって、「両方の場所に追加して先に進む」という「解決策」は受け入れられません。
spring - Spring YAML プロファイル構成
Spring プロファイルが yaml およびプロパティ ファイルでどのように機能するかをよく理解しているかどうかはわかりません。これらの 2 種類の構成をミスしようとしていました (2 つのファイルは構成を共有していません) が、yaml 構成からプロファイルを読み取るときに問題が発生しています。
Spring 4.1.1を使用しています
これがコードです。これは context:property-placeholder 構成です:
ここで、yamlProperties は次の Bean です
ここにtest.ymlがあります
私の問題は、これを実行してデータソースを (xml 経由で) 構成しようとすると、次のようになることです。
Spring は常に、プロファイルを無視して YAML ファイルの最後の構成を使用します。web.xml の contex-parameter を介して、または直接 JVM にアクティブ プロファイルを渡そうとしました (アクティブ/デフォルト プロファイルを取得するために EnvironmentAware インターフェイスを実装する Bean を実装しましたが、それは正しいです)。値を挿入すると、プロファイルは無視されます。
プロパティプレースホルダーコンテキスト(注文付き)を使用すると、PropertySourcesPlaceholderConfigurerのインスタンスであるプロパティプレースホルダーが1つ取得されるため、環境にアクセスできると思いますが、プロファイルが無視され、Springが最後のyamlファイル構成を取得する理由を理解できません。
セクション 63.6 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.htmlに、ドキュメント (spring-boot) への参照を追加し ます。
前もって感謝します
java - Spring でマージされたプロパティを取得する
プロジェクトでマージされたすべてのプロパティを取得しようとしています。以下は、プロパティの構成ファイルのセクションです。
PropertiesFactoryBean
クラスでも試しましたが、proj.env
変数が見つかりません。実行時に春にマージされたすべてのプロパティを取得する方法を教えてください。
java - 外部プロパティ ファイルの読み取り
このアプリケーションを開発するために Spring MVC を使用しています。外部の .properties ファイルから読み取ることになっています。
mvc-dispatcher-servlet.xml
構成.java
EditorController.java
アプリケーションを起動すると、ファイルを読み取って URL を取得できますが、ブラウザで開くと、hostURL=null になります。
誰かが間違いを指摘できますか?
java - @Value アノテーションなしでプロパティ値を注入する Spring
Spring @Value アノテーションを使用してプロパティ値を注入しています。挿入する Java フィールドに一致するようにプロパティ名を命名する規則があります。これにより、構成 Bean の各 Java フィールドに @Value アノテーションを付ける必要があるという不要な作業が発生します。
Java クラスに新しいアノテーション (ConfigBean としましょう) を付けて、ポスト プロセッサにそのような Bean のプロパティ名を読み取らせ、プロパティ値を自動的に挿入させる方法を探しています。
@Value アノテーションを使用せずにこのプロパティ インジェクションを実装する方法について、いくつかの指針を探しています。