私はプログラム的に春のブートプロジェクトに春のコンバータを登録したいです。過去の春のプロジェクトで、私は 春ブーツで登録春コンバータプログラム
<!-- Custom converters to allow automatic binding from Http requests parameters to objects -->
<!-- All converters are annotated w/@Component -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<ref bean="stringToAssessmentConverter" />
</list>
</property>
</bean>
が、私は春ブーツのSpringBootServletInitializerで行う方法を把握しようとしている...このようなXMLでそれをやった
を更新:は私が作りましたgetConversionService
に引数としてStringToAssessmentConverterを渡すことが、今、私はなっていないんだことにより、ほとんど進展StringToAssessmentConverterクラスのエラーを「いいえデフォルトコンストラクタが見つかりました」。私はなぜSpringが@Autowiredコンストラクタを見ていないのか分かりません。ここConverterのコードだ
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
...
@Bean(name="conversionService")
public ConversionServiceFactoryBean getConversionService(StringToAssessmentConverter stringToAssessmentConverter) {
ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
Set<Converter> converters = new HashSet<>();
converters.add(stringToAssessmentConverter);
bean.setConverters(converters);
return bean;
}
}
...
@Component
public class StringToAssessmentConverter implements Converter<String, Assessment> {
private AssessmentService assessmentService;
@Autowired
public StringToAssessmentConverter(AssessmentService assessmentService) {
this.assessmentService = assessmentService;
}
public Assessment convert(String source) {
Long id = Long.valueOf(source);
try {
return assessmentService.find(id);
} catch (SecurityException ex) {
return null;
}
}
}
全エラー
ゴールorg.springframework.bootの実行に失敗しました:春・ブートのmaven-pluginのを:1.3.2 .RELEASE:プロジェクトでrun(default-cli)を実行しました。yrdstick:実行中に例外が発生しました。 null:InvocationTargetException: 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor'という名前のBeanを作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。ネストされた例外はorg.springframework.beans.factory.UnsatisfiedDependencyExceptionです:me.jpolete.yrdstick.Applicationで定義された 'conversionService'という名前のBeanを作成中にエラーが発生しました:[me.jpolete.yrdstick.websupportのインデックス0のコンストラクタ引数で表されている満足度の低い依存関係.StringToAssessmentConverter]::ファイル '/yrdstick/target/classes/me/jpolete/yrdstick/websupport/StringToAssessmentConverter.class'に定義された 'stringToAssessmentConverter'という名前のBeanを作成中にエラーが発生しました:Beanのインスタンス化に失敗しました。 [me.jpolete.yrdstick.websupport.StringToAssessmentConverter]インスタンス化しないために失敗しました::ネストされた例外はorg.springframework.beans.BeanInstantiationExceptionでは見つかりませんデフォルトコンストラクタを。ネストされた例外はjava.lang.NoSuchMethodExceptionです:me.jpolete.yrdstick.websupport.StringToAssessmentConverter();。入れ子にされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:ファイル '/yrdstick/dev/yrdstick/target/classes/me/jpolete/yrdstick/websupport/StringToAssessmentConverter.class]に定義された' stringToAssessmentConverter 'という名前のBeanを作成中にエラーが発生しました:インスタンス化豆の失敗。ネストされた例外はorg.springframework.beans.BeanInstantiationException:インスタンス化に失敗しました[me.jpolete.yrdstick.websupport.StringToAssessmentConverter]:デフォルトコンストラクタが見つかりませんでした。ネストされた例外はjava.lang.NoSuchMethodExceptionです。me.jpolete.yrdstick.websupport.StringToAssessmentConverter()
このようにしてみてください。converters.add(new StringToAssessmentConverter()); – Shaheer
@Shaheer私はそれを新しいものとインスタンス化することはできません。 StringToAssessmentConverterはそれ自身のAutowired依存関係を持っています。 – jpolete