在Java Web项目里实现IOC(不使用框架,自己通过代码实现)
一:IOC的好处
有的项目在管理DAO的时候会抽象出一个interface,如ArticleDao;然后去做一些他的实现:如ArticleDaoForDb2或者ArticleDaoForOracle。这样在Servlet里面new一个ArticleDao可以写成:
public class BaseServelt extends HttpServlet {private static final long serialVersionUID = 1L;/** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {BeanFactory beanFactory=(BeanFactory) getServletContext().getAttribute(InitBeanFactoryServlet.INIT_FACTORY_NAME);Method[] methods=this.getClass().getMethods();for (Method method : methods) {if (method.getName().startsWith("set")) {String propertyName=method.getName().substring(3);StringBuffer sb =new StringBuffer(propertyName);sb.replace(0, 1, (propertyName.charAt(0)+"").toLowerCase());propertyName=sb.toString();Object bean= beanFactory.getBean(propertyName);try {method.invoke(this, bean);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}}super.service(request, response);}}
1 楼 仅此而已 2011-07-26 相当棒了。 java的反射机制。向你学习了。