在普通的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>
完成。