项目中一个普通的Java类如何获取service接口(一)

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

完成。

原文地址:https://www.cnblogs.com/zjiacun/p/6692023.html