我正在使用Spring
,我不使用JSF
,使用ajax
等。
我有服务
@Service(value="mailService")
public class MailService{
//an autowired dao, etc here
}
我有一个 bean,我希望这个 bean 有一个 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/>
EmailAgent 中的 mailService 在调用一个 EmailAgent 方法时为空。
我请求一些建议,并且我想了解为什么在服务器启动期间我没有收到任何异常,例如“我无法自动装配 mailService”。不久前我正在使用JSF
,我能够在服务器启动时看到这样的警告。
问题已明确,如何解决
我用EmailAgent ea=new EmailAgent();
It is my sillyness 生成 ea 但是,当我尝试获取一个上下文时,例如:
ClassPathXmlApplicationContext cont=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
mailService=()cont.getBean("mailService");
我面临着非唯一缓存等问题,关于生成更多上下文的问题。那么我怎样才能“获取”上下文,防止“生成”一个呢?
解决了
我添加了
<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 和 spring 的注释确实相互冲突。
感谢@NimChimpsky 提供有关检测问题的想法。