私はスターターでSpring Bootを使用しています。私がスターターを誤って構成した場合(欠落した値または定義されていない値が定義されている)、 "欠落値"の代わりに "欠落したBean"というエラーメッセージが表示されます。バグを見つけるのはかなり難しいです。Spring Starter:欠損値の代わりにBeanが見つからない
私のスターターは、キーmy.starter.valueが欠落している場合、私はエラーを見てみたいと思いますspring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.MyStarterConfiguration
で
@ConditionalOnProperty(name = "my.starter.value")
@Configuration
public class MyStarterConfiguration {
@Bean
public MyStarterExample myStarterExample(@Value("${my.starter.value}") String s) {
return new MyStarterExample(s);
}
のように見えます"my.stater.value is missing"というメッセージが表示されます。残念ながら、それは豆が欠けているだけを表示します。それはあまりにも不正確です。このようなエラーメッセージは、メインアプリケーションに値がない場合に表示されます。
[...] org.springframework.beans.factory.NoSuchBeanDefinitionException:タイプなし予選豆[com.example.MyStarterExample [...]
あなたは私を設定するために助けることができます私のスターターのためのより正確なエラーメッセージを印刷するには?
再現方法:今 ダウンロード完全なソースhttps://drive.google.com/file/d/0BzbrQ3P_g0Z3U2dxbGE0enR1ZHM/view?usp=sharing
unzip my.problem.zip
cd my.starter/
mvn clean install
cd ../my.application/
mvn clean package
java -jar target/my.application-0.0.1-SNAPSHOT.jar
メインアプリケーションの設定ミスを犯し値のsrc /メイン/リソース/ application.properties
my.starter.value=my.starter.value
my.app.value_=my.app.value
再起動
とりわけ、エラーメッセージがあるmvn clean package
java -jar target/my.application-0.0.1-SNAPSHOT.jar
を解決できませんでした。java.lang.IllegalArgumentExceptionが:プレースホルダ文字列値の 'my.app.value' "$ {my.app.value}"
これは問題ありません。
は今のsrc /メイン/リソース/ application.propertiesは、Bean
が欠けについてだけ、エラーメッセージがあり、再起動mvn clean package
java -jar target/my.application-0.0.1-SNAPSHOT.jar
my.starter.value_=my.starter.value
my.app.value=my.app.value
スターターの値を誤って設定します
[...] org.springframework.beans.factory.NoSuchBeanDefinitionException :タイプの修飾Beanはありません[...]
これは厄介です。私は、アプリケーションの価値のような欠損値を見たいと思います。
この場合、それはエラーメッセージ java.lang.IllegalArgumentExceptionがを見ることが@ConditionalOnPropertyを除去するのに十分です:文字列値にプレースホルダ「my.starter.value」を解決できませんでした「$ {} my.starter.value」 生産中の私のコードはより複雑で、この「修正」は役に立ちません。私は生産的なこの単純な例の違いを再考する必要があります... –