を使用している、使用してSpring
いないJSF
、使用してajax
いるなど。
サービスがあります
@Service(value="mailService")
public class MailService{
//an autowired dao, etc here
}
私は Bean を持っています。この Bean に 1 つの MailService が必要です。
//Here i have tried so far individually @Service, @Component, @Controller
public class EmailAgent{
private MailService mailService;
public MailService getMailService() {
return mailService;
}
@Autowired
public void setMailService(MailService mailService) {
this.mailService = mailService;
}
}
私はapplicationContext.xmlに以下を持っています
<context:component-scan base-package="mypack.containing.emailagent.path.too" />
<context:annotation-config/>
1 つの EmailAgent メソッドを呼び出すと、EmailAgent の mailService が null になります。
アドバイスをお願いしたいのですが、サーバーの起動中に「mailService を自動配線できませんでした」などの例外が発生しない理由を理解したいと思います。少し前に使用してJSF
いて、サーバーの起動中にそのような警告を見ることができました。
問題が特定され、解決方法
私は ea を生成していましEmailAgent ea=new EmailAgent();
た それは私の愚かさですが、次のようなコンテキストを取得しようとすると:
ClassPathXmlApplicationContext cont=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
mailService=()cont.getBean("mailService");
一意でないキャッシュなどの問題、もう 1 つのコンテキストの生成に関する問題に直面しています。では、コンテキストを「取得」して、コンテキストをもう 1 つ「生成」しないようにするにはどうすればよいでしょうか。
解決した
追加した
<bean class="email.EmailService" id="emailService">
<dwr:remote javascript="emailService">
<dwr:include method="sendMail"/>
<dwr:include method="readAllMails"/>
<dwr:include method="removeMailsById"/>
</dwr:remote>
</bean>
dwr.xml に追加し、emailService から dwr に関するアノテーションを削除しました。
私が見ることができるように、 dwr s と spring s の注釈は本当に競合していました。
問題を検出するためのアイデアを提供してくれた @NimChimpsky に感謝します。