問題タブ [spring-profiles]
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.
spring - Spring /boot、プロファイル、Java 構成、Bean 作成順序 (予期しない動作??)
私は春のブートアプリに取り組んでいます。各環境 (dev、int、qa、prd など) のプロパティ ファイルがあります。Bean に関しては、生産用に別の方法で作成する必要があるものもあります。したがって、次の構成があります。
MyBean は次のように自動配線されます。
アプリケーションを次のように起動する場合:
-Dspring.profiles.active=prd
「someBeanProd」メソッドが呼び出され (予想どおり)、関連するプロパティ ファイルが読み込まれています (application-prd.properties)。他のプロファイルでは、「someBeanDev」が呼び出され (予想どおり)、関連するプロパティ ファイルが読み込まれます。
ただし、構成内のメソッドの順序を次のように変更すると、「someBeanDev」メソッドが常に呼び出されますが (アクティブなプロファイルが prd の場合でも)、正しいプロパティ ファイルが使用されています。
これは正しい/予期される動作ですか? 構成ファイル内のメソッドの順序に関係なく、Spring が正しい Bean を作成することを期待していました。
あるプロファイルの Bean を定義する方法はありますか?他のプロファイルは「デフォルト」プロファイルにフォールバックする必要がありますか?
別の Java 構成クラスで prd Bean を作成しても機能しません。
spring - 複数のアクティブなプロファイルがある場合のプロファイル固有のプロパティの読み込み
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.htmlによると、application-${profile}.properties を使用してさまざまな application.properties ファイルをロードできますアクティブなプロファイルを設定します。application.properties が変更されている場合、それは素晴らしいことですが、これを行う必要がある batch.properties の場合はどうでしょうか? 複数のアクティブなプロファイルがある場合はどうなりますか? 例えば:
私のプロパティは次を使用してロードされます:
私は、batch-${profile}.properties がアクティブなプロファイルのいずれかを含むすべてのプロパティ ファイルを検索しようとすると想定していたので、batch-oracle.properties、batch-redis.properties、batch-hornetq.properties
見つかったものは使用し、見つからないものは無視されます。ただし、これは当てはまらないようで、${profile} が見つからないだけです。
アクティブなプロファイルが 1 つしかない場合は、${spring.active.profile} を使用するだけで問題ありませんが、アプリケーションをコンポーネント化するにつれてプロファイルを徐々に作成しているため、プロファイルを使用してプロパティをロードしたいと考えています。プロファイル固有のプロパティ プレースホルダー Bean の束。
----- 更新 ----- 「M. Deinum」のコメントに基づいて、次のことを試しました。
プロパティファイルが表示されます。
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 - Java Spring プロファイルが Linux で機能しない
私は Windows で開発した Web アプリケーションを持っています。その後、それを Linux (Staging nad Production) にデプロイします。
環境ごとに 3 つの .properties ファイルを作成しました。
- application-dev.properties
- application-staging.properties
- application-prod.properties
次の解決策を実装することにしました。関連する値(dev / staging / prod)を使用して各マシンに環境変数を作成し、これに従って、corect .properties ファイルをロードできるようにします。
このソリューションは Windows では完全に機能しますが、Linux では同じように機能させることができません。
これは私のコードです:
Web.xml
ConfigurableApplicationContextInitializer クラス:
ContextsConfiguration クラス:
Linux では、この変数 (APP_ENV) を何百万もの場所で定義しました。.environment ファイル、.bash ファイル、setenv.sh ファイル。また、printenvを実行すると、そこに表示されます。
System.getenv("APP_ENV") の値と出力される「ステージング」値を出力するメインの単純な Java クラスを作成しようとしました。
しかし、私のアプリケーションでは、ステージングではなく開発が常に表示されます。
ステージングを確認する唯一の方法は、「ハードコードされた」アクティブ プロファイルを web.xml に追加することです。
しかし、私は本当にこの方法で作業したくありません。自動的かつ動的に認識されるようにしたいのです。
助けてください :)
java - Spring エラー - Spring プロファイルの使用: フィルター applicationFilterChain を開始する例外
私は動作中のSpring構成のWebアプリケーションから始め、Springコンテキスト構成ファイルのbeansタグにSpringプロファイルを追加しています:
web.xml から
次の例外が発生しましたが、これを解決する方法がわかりません。
2015-11-25T16:06:17.631+0000|SEVERE: WebModule[/MyWebApp]PWC1270:フィルタ applicationFilterChain java.lang.InstantiationException の開始例外 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:124) で org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4685) で org.apache.catalina.core.StandardContext.start( StandardContext.java:5377) の com.sun.enterprise.web.WebModule.start(WebModule.java:498) の org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917) の org.apache.catalina .core.ContainerBase.addChild(ContainerBase.java:901) の org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733) の com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2019) ) com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1669) で com.sun.enterprise.web.WebApplication.start(WebApplication.java:109) で org.glassfish.internal.data.EngineRef.start(EngineRef.java:130) at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301) at com.sun .enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) で com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) で org.glassfish.deployment.admin.DeployCommand.execute (DeployCommand.java:389) com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1066) com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) com.sun.enterprise. v3.admin。CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) com.sun.enterprise.v3.admin.AdminAdapter.doCommand( AdminAdapter.java:461) com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212) com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) com .sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354) com.sun.enterprise .v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask) .java:757) com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter (DefaultProtocolChain.java:137) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) com.sun.grizzly.http. HttpProtocolChain.execute(HttpProtocolChain.java:79) com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) com.sun.grizzly .ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.java.lang.Thread.run(Thread.java:744) の util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 原因: org.springframework.beans.factory.NoSuchBeanDefinitionException: 'applicationFilterChain' という名前の Bean が定義されていませんorg.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:549) で org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) で org.springframework.beans.factory .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java) :1109) 組織で。springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326) で org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:236) で org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean. java:194) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 もっと見るgetFilter(ApplicationFilterConfig.java:264) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 詳細getFilter(ApplicationFilterConfig.java:264) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 詳細
java - @IfProfileValue 2 つのスプリング プロファイル
こんにちは、私は springboot アプリを持っています。2 つの可能性のある spring プロファイルがあります。1 つは環境構成関連 (dev、prod、staging...) で、もう 1 つはリモート サービスをモックしたもので、remoteServiceMock と呼びましょう。だから私はでマークされたオリジンサービスを持っています:
そして模擬豆:
次のコマンドでアプリケーションを実行すると、テスト以外はすべて問題ありません。
また
したがって、対応する Bean がロードされます。しかし、テストで問題が発生しました。私のテストクラス:
spring.profiles.active が完全に一致する場合にのみテストが実行される問題。したがって、次のように記述した場合にのみテストが実行されます。
質問は次のとおりです。
1)「含む」/「含まない」プロファイル機能を使用して、IfProfileValue に何らかの拡張機能を作成することは可能ですか?
2)私の目標に対する他のより良い解決策はありますか? (したがって、リモートサービスの1つ(機能にはいくつかあります)をモックし、アプリをステージング環境にデプロイしたいと思います)。
ありがとう
java - 春のAOP。@Aspect アノテーションは @Profile では機能しません
私はこの側面を持っています:
プロファイルを使用して無効/有効にできるようにしたい。したがって、「メジャー」プロファイルを指定しないと機能しません。
java - 春に環境固有のプロパティファイルをロードする
私はスプリング ブート アプリケーションに取り組んでいます。以下のシナリオであなたの支援が必要です。
application-dev.properties、application-prod.properties などの各環境のプロパティ ファイルがあります。Spring @Profile アノテーションを使用してアプリケーションが環境固有のプロパティ ファイルをロードできる方法はありますか。
助けてください。