在普通的Java类中获取service接口目的是调用接口中的方法,实现数据的持久化等操作:
Java类中的获取service接口方法:
IfaceDetectService faceDetectService = (IFaceDetectService)SpringUtil.getObject("faceDetectService");
注意:括号中的“faceDetectService”一定要与serviceimpl上注入的一致。
SpringUtil类:
public static final String publicDBSource = "publicDBSource"; //本地数据库连接 //此方法会重新加载spring,故不用 // public static ApplicationContext ct=new ClassPathXmlApplicationContext("/config/spring/spring-servlet.xml"); ; public static ApplicationContext ct; public static ServletContext servletContext; //从数据库中获得数据库连接 public static Connection getSpringBean(String beanId){ BoneCPDataSource datasource=(BoneCPDataSource)ct.getBean(beanId); Connection conn = null; try { conn=(Connection) datasource.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static BasicDaoSupportImpl getDaoSupport(){ return (BasicDaoSupportImpl)ct.getBean("basicDaoSupport"); } public static Connection getPublicConnection(){ return getSpringBean("publicDBSource"); } //spring中获得bean public static Object getObject(String beanId){ return ct.getBean(beanId); } //获得web.xml配置文件参数 public static String getContextParams(String name){ return servletContext.getInitParameter(name); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Connection conn = getSpringBean(null); CallableStatement statement = null; String sql = "{call InsertBBSBloger(?,?,?)}"; try { statement = conn.prepareCall(sql); statement.setString(1, "jacun"); statement.setString(2, "http://3more.jpg"); statement.registerOutParameter(3, Types.INTEGER); statement.execute(); //输出: int webid = statement.getInt(3); System.out.println(webid+"==="); } catch (SQLException e) { e.printStackTrace(); } } @Override public void setApplicationContext(ApplicationContext arg0) throws BeansException { SpringUtil.ct = arg0; } @Override public void setServletContext(ServletContext arg0) { servletContext = arg0; }
main方法是我在测试时候用的,可以去掉。
配置文件spring-servlet.xml:
<!-- 自动spring ApplicationContext 到对象中 -->
<bean id="SpringUtil" class="monitor.util.SpringUtil"></bean>
完成。