2016-10-18 7 views
2

Freemarkerテンプレートエンジンを使用してHTML形式のメールを送信しようとしました。 私はいくつかのサービスでこれをしなければなりませんでした。 freemarkerはうまく機能していますが、別のサービスではうまく動作していません。 しかし、freemarkerに関連するコードは実際は同じです。 Freemarker設定の自動配線に失敗しました

@Autowired 
private Configuration freeMarkerConfig; 

のオートワイヤリングはなく、他では、一つのサービスで働いていません。 オートワイヤリングはhierachy(例えばコントローラautowiresサービスに表示され、サービスがmailserviceとをautowires、mailserviceとはFreeMarkerのをautowires別のコンポーネントを、autowires ... 私はこの問題を解決する方法を見つけ出すカント エラースタックトレース:。

Exception encountered during context initialization - cancelling refresh attempt: 
    org.springframework.beans.factory.UnsatisfiedDependencyException: 
    Error creating bean with name 'userController': 
    Unsatisfied dependency expressed through field 'userService': 
    Error creating bean with name 'userService': 
    Unsatisfied dependency expressed through field 'mailService': 
    Error creating bean with name 'mailServiceImpl': 
    Unsatisfied dependency expressed through field 'mailMessages': 
    Error creating bean with name 'mailMessages': 
    Unsatisfied dependency expressed through field 'freeMarkerConfig': 
    No qualifying bean of type [freemarker.template.Configuration] found for dependency [freemarker.template.Configuration]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [freemarker.template.Configuration] found for dependency [freemarker.template.Configuration]: expected at least 1 bean which qualifies as autowire candidate for this dependency. 

私はspring-boot 1.4.0を使用しているので、より多くの設定を行う必要はありませんか?間違っていますか?freemarkerのためのXMLやJavaの設定はもうありません。フリーメディアを使用する他のサービスで何かを設定してください。

答えて

2

私がspring-boot 1.4.0を使用しているので、さらに の設定を提供する必要はありませんか、間違っていますか?だから私はそれ以上のxmlもjavaもありません freemarkerの設定..私はそれを設定しませんでした 私はfreemarkerを使用する他のサービスで何かを設定する必要があります。

Freemarkerエンジンを構成するBeanを自動的に設定するスタータープロジェクトを使用している場合を除き、作成する必要があります。このような何か:

@Configuration 
public class MyConfiguration { 
    @Bean 
    freemarker.template.Configuration freeMarkerConfig() { 
     return someConfigBeanInstantiatedHere; 
    } 
} 

ThisはあなたのためにFreemarkerのを設定スタータープロジェクトのためのかなり良い参照のように見えます。

+1

これは私のために働く、ありがとう。しかし、フリーメーカが他のプロジェクトでなぜそのような設定なしで動作するのか、まだ興味があります。さらに、freemarker.templates.Configurationコンストラクタは推奨されなくなりました。 freemarkerを設定するためのより最近のアプローチがありますか? – lunatikz

+0

も私のために働く... –

関連する問題