关于Spring IoC的方法请大家指教

bukebushuo 2008-06-12 10:44:04
我使用Struts2+Spring2+iBATIS2进行开发,系统配置一切都OK,
现在,我要想扩展一个Struts2的控件就是那个Select标签,我继承了AbstractRequiredListTag类,
生成一个新的类DSelect,来替换原来的Select类,一切都能正常。
现在,我想在这个DSelect类里添加DAO访问功能,DAO都已经在配置文件中配置好了,
在正常的运用中都能正常取出数据,现在的问题是我在DSelect里怎么访问DAO?
正常访问是Action->Service->DAO,这些类都在Spring配置文件里配置好,直接用就可以。
但是这个DSelect是不受Spring控制的一个类,怎样访问DAO?
谢谢!
...全文
95 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Landor2004 2008-06-12
  • 打赏
  • 举报
回复
标签中肯定能得到Context

这样行不 pageContext.getServletContext()
laorer 2008-06-12
  • 打赏
  • 举报
回复
DSelect
中可以得到Context不?可以的话那基本上就没问题了啊
radeonxhl 2008-06-12
  • 打赏
  • 举报
回复
按照我上面的方法,还有个问题就是怎么在你的DSelect类中获得servletContext
因为对自定义标签不熟,不知道怎么弄,要你自己想办法了,呵呵
radeonxhl 2008-06-12
  • 打赏
  • 举报
回复
1.建议通过service层访问,不要直接调用Dao

2.可以这样来访问:

WebApplicationContext springCtx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
Service service = (Service)springCtx.getBean("Service");

//如果你一定要直接访问Dao的话
Dao dao = (Dao)springCtx.getBean("Dao");
bukebushuo 2008-06-12
  • 打赏
  • 举报
回复
根据楼上的朋友的建议试验成功
如下:
@SuppressWarnings("unused")
ServletContext servletContext = pageContext.getServletContext();

WebApplicationContext springCtx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
DictionarySelectTagDAO dictDAO = (DictionarySelectTagDAO)springCtx.getBean("dictDAO");

List dlist = dictDAO.selectDictionaryList("Dict.select-all-user");

能正确地取出数据。
为什么不用Service?
因为在控件里并不需要事务处理,仅仅是简单的查询一个数据列表,并且是包装在一个标签类中,
基本不用采用业务处理中的顺序调用逻辑,为了简单起见,直接调用了DAO,呵呵。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧