0

我正在使用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 提供有关检测问题的想法。

4

1 回答 1

1

除非您进行集成测试,否则您不需要其他上下文。

emailagent 在哪里使用?像往常一样在那里注入它。正如您对邮件服务所做的那样。

您可以使用 Component 或 Service 对其进行注释,两者都是合适的。

于 2012-10-10T12:13:30.820 回答