精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-02-25
cbcivp 写道 yhc0125 写道 如果要以web程序方式运行的话:这段配置
<value>WEB-INF/jdbc.properties</value> 应该是<value>/WEB-INF/jdbc.properties</value> 这样的 如果做测试的话,建议你使用ClassPathXmlApplicationContext创建application,注意的是要把你的配置文件放到你工程的classpath下面 那么我以web程序方式运行的话,我该如何用代码获取datasource呢? 也就是写个方法获取dataSource,怎么写呢?谢谢!! 先问一下,你是通过ContextLoadServlet创建applicationContext的吗? |
|
返回顶楼 | |
发表时间:2005-02-25
自己总结一下,不对之处希望各位指导!对此表示感谢!!
配置: web.xml中只配置applicationContext.xml并放在WEB-INF下,文件中不设置任何bean。 在classes目录下面放入bean.xml,内容如下: <beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>oracle.jdbc.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@192.168.1.2:1521:orcl</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value>123</value> </property> </bean> <bean id="dataBean" class="com.my.application.test.DataBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> </beans> java代码DataBean.javapublic class DataBean { private DataSource dataSource; public void setDataSource(DataSource dataSource); { this.dataSource = dataSource; } public void testDataSource(); { try { Connection connection = dataSource.getConnection();; if(connection != null); System.out.println("test ok!");; } catch(Exception e); { e.printStackTrace();; } } public void getDataSourceTest(); { BeanDefinitionRegistry reg = new DefaultListableBeanFactory();; XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);; reader.loadBeanDefinitions(new ClassPathResource("bean.xml"););;; BeanFactory bf = (BeanFactory); reg; DataBean dataBean = (DataBean); bf.getBean("dataBean");; dataBean.testDataSource();; } public static void main(String[] args); { DataBean db = new DataBean();; db.getDataSourceTest();; } } |
|
返回顶楼 | |
发表时间:2005-02-25
cbcivp 写道 自己总结一下,不对之处希望各位指导!对此表示感谢!!
配置: web.xml中只配置applicationContext.xml并放在WEB-INF下,文件中不设置任何bean。 在classes目录下面放入bean.xml,内容如下: <beans> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>oracle.jdbc.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@192.168.1.2:1521:orcl</value> </property> <property name="username"> <value>sa</value> </property> <property name="password"> <value>123</value> </property> </bean> <bean id="dataBean" class="com.my.application.test.DataBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> </bean> </beans> java代码DataBean.javapublic class DataBean { private DataSource dataSource; public void setDataSource(DataSource dataSource); { this.dataSource = dataSource; } public void testDataSource(); { try { Connection connection = dataSource.getConnection();; if(connection != null); System.out.println("test ok!");; } catch(Exception e); { e.printStackTrace();; } } public void getDataSourceTest(); { BeanDefinitionRegistry reg = new DefaultListableBeanFactory();; XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);; reader.loadBeanDefinitions(new ClassPathResource("bean.xml"););;; BeanFactory bf = (BeanFactory); reg; DataBean dataBean = (DataBean); bf.getBean("dataBean");; dataBean.testDataSource();; } public static void main(String[] args); { DataBean db = new DataBean();; db.getDataSourceTest();; } } 你这么做还要applicationContext.xml干什么?如果你是要做测试的话,可以把你的applicationContext.xml放到/WEB-INF/classes下面就行了,干嘛还要另外写一个bean.xml呢?如果你的应用是web方式的话,用ContextLoadServlet可以直接加载applicationContext.xml,创建applicationContext,并且放在ServletContext里面,你要什么Bean直接从那里去就行了 |
|
返回顶楼 | |
发表时间:2005-02-28
先问一下,你是通过ContextLoadServlet创建applicationContext的吗?
是的。 但eclipse中测试的时候需要写testcase,之前你以告诉我将applicationContext.xml放在classes下面。 你这么做还要applicationContext.xml干什么?如果你是要做测试的话,可以把你的applicationContext.xml放到/WEB-INF/classes下面就行了,干嘛还要另外写一个bean.xml呢?如果你的应用是web方式的话,用ContextLoadServlet可以直接加载applicationContext.xml,创建applicationContext,并且放在ServletContext里面,你要什么Bean直接从那里去就行了 ![]() 我的应用是以web方式运行,这个是肯定的。另外写一个bean.xml是自慰(因为一直不知道如何在我之前的那种配置情况下得到datasource)。另外因为在spring的例子中applicationContext.xml <value>WEB-INF/jdbc.properties</value> 之前你说改为 <value>/WEB-INF/jdbc.properties</value> 在dataAccessContext-local.xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"><value>${jdbc.driverClassName}</value></property> <property name="url"><value>${jdbc.url}</value></property> <property name="username"><value>${jdbc.username}</value></property> <property name="password"><value>${jdbc.password}</value></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"><ref local="dataSource"/></property> </bean> 在你的回答中 如果你的应用是web方式的话,用ContextLoadServlet可以直接加载applicationContext.xml,创建applicationContext,并且放在ServletContext里面,你要什么Bean直接从那里去就行了 我实在不知道如何写这段代码,能否再次麻烦你一次 ![]() |
|
返回顶楼 | |
发表时间:2005-02-28
web方式下:在你的web.xml文件里加上:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 这样就可以了,在你的应用启动时,容器首先加载这个“ContextLoaderServlet”servlet,创建applicationContext,并放在ServletContext中,可以通过ServletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)方法获得;有了applicationContext,你就知道怎么做了吧 |
|
返回顶楼 | |