問題:新しいDAOインタフェースのプロンプトのユニットテストを記述します。
Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'maxActive'; nested exception is java.lang.NumberFormatException: For input string: "${maxActive}"
プレースホルダの元の設定データソースを使用する場合、プロンプトがプレースホルダ$ {MAXACTIVE}は、対応する属性なし見出さ解析されます。
特性@PropertySource(値= {「クラスパス*使用ローディングユニットテスト :jdbc.properties」}) アノテーション負荷設定ファイルを。
あなたがあなたの特性を確認した後にファイルパスが正しいであり、以下のように属性値は、インターネット上で適切な情報を見つけることがありhttps://my.oschina.net/u/1455908/blog/215953はそれがMapperScannerConigurer MyBatisのを設定しますと言います@PropertySource注釈優先解析プレースのプレースホルダ解析が直接設定項目の値として「$ {MAXACTIVE}」の文字列を使用しないからです。文字列は対応する値をintに変換することができません「$ {MAXACTIVE}」と呼ばれる与えられています。
この問題を解決します
オリジナル@PropertySourceから注釈を使用してコンフィギュレーションファイルのロードは、以下のように(値= {「クラスパス* jdbc.properties」})を読み出します。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"></property>
</bean>
次のようにMapperScannerConfigurer元の構成は、変更を加えていません。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.**.dao,com.**.mapper,com.**.test.**.mapper" />
<!--网上说这个name属性值要配置成这个sqlSessionFactoryBeanName名字,我恰好配的就是这个,所以我这里不需要改-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
問題が解決されるようになっています。しかし、問題が残るが、なぜ@PropertySourceこのコメントはignoreUnresolvablePlaceholdersこのプロパティを設定することができないため、正しい方法を解析するXMLを使用することができます。