![](/img/trans.png)
[英]Spring - Injecting a dependency into a ServletContextListener
[英]Injecting dependencies to ServletContextListener
我正在開發一個Web應用程序,並且是Spring Hibernate的新手。 在這里,我有一個ServletContextListener來定期運行一個方法。 在該類中,我正在我的ReceiptDao類中調用一個方法。
下面是ServletContextListener類
public class MailReminder implements ServletContextListener {
public void contextInitialized(ServletContextEvent arg0) {
ServletContext servletContext = arg0.getServletContext();
System.out.println("ServletContextListener started");
int delay = 1000;
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
public void run(){
ReceiptDao receiptDao=new ReceiptDao();
receiptDao.listReceipts();
}
},delay, 1000*60);
}
public void contextDestroyed(ServletContextEvent arg0) {
ServletContext servletContext = arg0.getServletContext();
Timer timer = (Timer)servletContext.getAttribute ("timer");
if (timer != null)
timer.cancel();
servletContext.removeAttribute ("timer");
System.out.println("ServletContextListener destroyed");
}
}
下面是ReceiptDao中的方法
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
public List<Receipt> listReceipts() {
Session session = sessionFactory.openSession(); //line 150
Criteria crit= session.createCriteria(Receipt.class);
crit.add(Restrictions.eq("ReceiptId",2 ));
List<Receipt> receiptlist= crit.list();
session.close();
return receiptlist;
}
它在第150行中給出了NullPointerException。我知道發生這種情況是因為我是通過Spring非托管類調用此方法的。 但是我不知道如何將Spring管理的ReceiptDao注入到ServletContextListener中。
你能告訴我怎么注射嗎? 請在我的web.xml和spring-config-file.xml中提到我必須做的更改。
要創建一個新類並注入其他類,您需要創建bean。
如果您要注入收據DAO; 您需要如下:
<beans>
<bean id="receiptDAO" class="{path}.ReceiptDao" singleton="true"/>
<bean id="mailReminder" class="{path}.MailReminder" scope="singleton">
<property name="receiptDAO">
<ref bean="receiptDAO"/>
</property>
</bean>
</beans>
在您的課程中,只需創建:
private ReceiptDao receiptDAO;
public getReceiptDAO()
{
return receiptDAO;
}
您可以自由使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.