2017-08-29 17 views
0

これは私が書いたJava設定ファイルです。 SimpleRegistrationServiceメソッドのvelocityEngineでエラーが発生しました。setVelocityエンジンはorg.springframework.ui.velocity.VelocityEngineFactoryBeanには適用できません

setVelocity engine(org.apache.velocity.app.VelocityEngine)in SimpleRegistrationService cannot be applied to org.springframework.ui.velocity.VelocityEngineFactoryBean 

そして "resource.loader =クラス" の近くに、私は、エラーを解決する助けてください、このエラーに

setVelocityProperties(java.util.Properties) in VelocityEngineFactory cannot be applied to (java.lang.String, java.lang.String) 
  
<interface declaration>, <parcelable declaration>, AidlTokenType.import or AidlTokenType.package expected, got 'resource 

を取得しています。

package com.vlclabs.adsops.configuration; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.mail.javamail.JavaMailSenderImpl; 
import com.vlclabs.adsops.service.SimpleRegistrationService; 
import org.apache.velocity.app.VelocityEngine; 
import org.springframework.ui.velocity.VelocityEngineFactoryBean; 

@Configuration 
public class EmailConfiguration { 

    @Bean 
    public JavaMailSenderImpl mailSender() { 
     JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
     mailSender.setHost("mail.csonth.gov.uk"); 
     return mailSender; 
    } 

    @Bean 
    public SimpleRegistrationService registrationService(JavaMailSenderImpl mailSender, VelocityEngineFactoryBean velocityEngine) { 
     SimpleRegistrationService registrationService = new SimpleRegistrationService(); 
     registrationService.setMailSender(mailSender); 
     registrationService.setVelocityEngine(velocityEngine); 
     return registrationService; 
    } 

    @Bean 
    public VelocityEngineFactoryBean velocityEngine() { 
     VelocityEngineFactoryBean velocityEngine = new VelocityEngineFactoryBean(); 
     velocityEngine.setVelocityProperties("resource.loader=class", "class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 
     return velocityEngine; 
    } 
} 

答えて

3

あなたがvelocityPropertiesを悪用されているように、それは次のようになります。ルックス:あなたのvelocityEngine春FactoryBeanのであるので

@Bean 
public VelocityEngineFactoryBean velocityEngine() { 
    VelocityEngineFactoryBean velocityEngine = new VelocityEngineFactoryBean(); 

    Properties velocityProperties = new Properties(); 
    velocityProperties.put("resource.loader", "class"); 
    velocityProperties.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 
    velocityEngine.setVelocityProperties(velocityProperties); 

    return velocityEngine; 
} 

はなく、あなたが使用したい具体的なVelocityEngine、あなたのいずれかが必要に

@Bean 
public SimpleRegistrationService registrationService(JavaMailSenderImpl mailSender, VelocityEngineFactoryBean velocityEngine) { 
    SimpleRegistrationService registrationService = new SimpleRegistrationService(); 
    registrationService.setMailSender(mailSender); 
    registrationService.setVelocityEngine(velocityEngine.getObject()); // <--- getObject 
    return registrationService; 
} 
:春はあなたのため getObject()を呼び出しますので、FactoryBeanの上 getObject()メソッドを呼び出す、または VelocityEngine自体を注入

または

// VelocityEngine as parameter type, not VelocityEngineFactoryBean 
@Bean 
public SimpleRegistrationService registrationService(JavaMailSenderImpl mailSender, VelocityEngine velocityEngine) { 
    SimpleRegistrationService registrationService = new SimpleRegistrationService(); 
    registrationService.setMailSender(mailSender); 
    registrationService.setVelocityEngine(velocityEngine); // <-- no getObject() needed 
    return registrationService; 
} 

FactoryBeansに関する詳細については、華麗なジョシュロングことで、このブログ投稿を参照してください:https://spring.io/blog/2011/08/09/what-s-a-factorybean

+0

はあなたにその作業をお願いします。しかし、最初のエラーについてどうですか? – sndu

+0

また、返信文も正しいかどうかを知りたい。 – sndu

+0

私の答えは – Patrick

関連する問題