获取应用程序上下文的句柄

时间:2014-08-21 14:38:35

标签: spring jdbc

我正在尝试学习各种技术 - 希望使用HTML5和Jquery做一些UI工作 在UI中,我正在调用生成JSON输出的RESTFUL webservice(Jersey)

在我的网络服务中 - 我已经存根应该来自数据库的数据(mysql)

现在我想学习Spring JDBC模板(而不是使用普通的JDBC)

所以我的问题是在一个托管我的RESTFUL webservice的web应用程序中使用spring(只有spring jdbc而不是spring mvc)

我想使用spring jdbc模板 - 所以编写了一个spring xml文件,我正在创建必要的配置

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="....."
xsi:schemaLocation="....">

<bean id="examDAO" class="com.examscripts.mockexam.repository.ExamRepositoryImpl">
    <property name="ds" ref="ds" />
</bean>

<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/mockexam" />
    <property name="username" value="xxx" />
    <property name="password" value="yyy" />
</bean>

要加载这些,我在web.xml中添加了以下内容:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> 
在tomcat启动时

我可以看到文件已加载:

  

从类路径资源....

加载XML bean定义

现在我的问题是在我的服务层,我需要与DAO层(jdbc)进行通信 - 必须使用以下内容创建实际的bean:

 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");

// instantiate our spring dao object from the application context
ExamRepositoryImpl impl= (ExamRepositoryImpl)ctx.getBean("examDAO");

我对春天来说是全新的,谷歌搜索似乎总是显示春季mvc网络应用程序或独立的春天示例 - 我的案例是一个Web应用程序减去spring mvc但使用spring jdbc模板

任何指针?

1 个答案:

答案 0 :(得分:0)

  

从类路径资源....

加载XML bean定义

你走在正确的轨道上。 Spring正在加载您的XML文件(当您部署应用程序时)并实例化您声明的bean。为org.springframework编写日志以获取更多详细信息。

  

现在我的问题出在我需要通信的服务层   使用DAO层(jdbc) - 必须使用创建实际的bean   像这样的东西:

不,绝对不是。使用像Spring这样的依赖注入框架的全部目的是避免编写这样的代码。

在服务类中声明一个以DAO为参数的setter。

public void setExamDAO(ExamDao examDao) {
    this.examDao = examDao;
}

在XML文件中为服务类添加新的XML bean定义,并创建一个在DAO中连接的新<property>

<bean id="yourservice" class="com.foo.YourServiceClass">
  <property name="examDao" ref="examDAO"/>
</bean>