`
tgh237
  • 浏览: 1307 次
社区版块
存档分类
最新评论

结合spring配置JNDI的测试用例

阅读更多
最近用到JNDI,并且在spring中进行配置,可是由于各种条件限制,需要在测试各种资料后发现想要在spring中实现并不太容易,参考网上的资料总结出两种方式,为自己做备份,也为他人做参考,少走弯路:
1. 通过InitialContext,context.lookup("test")实现,缺点不能代码全部自己写,几乎不能用spring
String[] paths = {"conf/testJNDI.xml" };//testJNDI.xml参考文章后边
        ClassPathXmlApplicationContext app =new ClassPathXmlApplicationContext(paths);
        DataSource testDs =(DataSource) app.getBean("testDs1");
        SimpleNamingContextBuilder builder =new SimpleNamingContextBuilder();
        builder.bind("test1", testDs);

        try {
            builder.activate();
        } catch (NamingException e) {
            e.printStackTrace();
        }

        JSONObject reqJson = new JSONObject();
        Long startDate = System.currentTimeMillis();

        Context context = new InitialContext();
        DataSource ds = (DataSource)context.lookup("test");
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(ds);

        BaseDAOImpl baseDao = new BaseDAOImpl();
        baseDao.setNameJdbcTemplate(namedParameterJdbcTemplate);
        List<Map<String, Object>> tradeList = baseDao.querySql("select * from trade");

2. 与spring完美结合,但是配置文件DataSource和spring相关配置分开写,配置文件参考文章最后
String[] paths = {"conf/testJNDI.xml" };
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext(paths);
        DataSource testDs1 =(DataSource) app.getBean("testDs1");

        SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
        builder.bind("test1", testDs1);

        try {
            builder.activate();
        } catch (NamingException e) {
            e.printStackTrace();
        }

               String[] servicePath = {"conf/testSpring.xml" };
        ClassPathXmlApplicationContext testContext = new ClassPathXmlApplicationContext(servicePath);

        Long startDate = System.currentTimeMillis();
        TradeInfo tradeInfo = (TradeInfo)testContext.getBean("tradeInfo");

        try {
            Map map = tradeInfo.getMainTradeInfo("1115031212567112");
            System.out.println(System.currentTimeMillis() - startDate);
            logger.debug("================>"+map.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }


附:testJNDI.xml
<bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:ds.properties</value>
            </list>
        </property>
    </bean>

    <bean id="abstractDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
            <value>oracle.jdbc.OracleDriver</value>
        </property>
        <property name="maxActive"><value>${maxActive}</value></property>
        <property name="maxIdle"><value>${maxIdle}</value></property>
        <property name="minIdle"><value>${minIdle}</value></property>
        <property name="initialSize"><value>${initialSize}</value></property>
    </bean>

    <bean id="testDs1" parent="abstractDS">
        <property name="url">
            <value>your database url</value>
        </property>
        <property name="username">
            <value>test</value>
        </property>
        <property name="password">
            <value>test</value>
        </property>
    </bean>

testSpring.xml
      <bean id="dao" class="com.db.dao.impl.BaseDAOImpl">
        <property name="nameJdbcTemplate">
            <ref bean="nameJdbcTemplate"/>
        </property>
    </bean>

   
    <bean id="nameJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        <constructor-arg>
            <ref bean="testDataSource" />
        </constructor-arg>
    </bean>

    <bean id="testDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>test1</value> <!-- 代码中对应的字符   builder.bind("test1", testDs1);-->
        </property>
    </bean>
分享到:
评论

相关推荐

    sprin jms activemq 测试

    这些示例可能涵盖了如何创建消息生产者和消费者,如何配置ActiveMQ连接工厂,以及如何编写测试用例来验证消息传递的正确性。 总的来说,Spring与JMS和ActiveMQ的结合,为企业级应用提供了可靠且可扩展的消息传递...

    ejb spring

    - **测试类**:可能包含了一些测试用例,用于验证ejb和Spring的协同工作是否正常。 **总结** ejb与Spring的集成是一个常见的技术实践,它结合了ejb的强大功能和Spring的灵活性,使得企业级应用的开发更加高效和...

    Spring.3.x企业应用开发实战(完整版).part2

    2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 UserService 2.4.2 在Spring中装配Service 2.4.3 单元测试 2.5 展现层 ...

    史上最全!北大青鸟java学士后第二单元超市账单管理系统(包含oracle数据库创建的SQL代码)只要配置好JNDI就可以运行

    8. **单元测试和集成测试**:为了保证系统的稳定性和正确性,开发者需要编写测试用例,利用JUnit或Mockito等工具进行单元测试,验证单个功能的正确性;而集成测试则是检查各个模块间的协同工作。 9. **版本控制系统...

    Spring和ActiveMQ整合的完整实例

    2. **配置Spring**:在Spring的配置文件中,定义JmsTemplate,指定ActiveMQ的ConnectionFactory,这通常是通过JNDI查找完成的。同时,可以配置MessageListenerContainer,它将负责监听消息并调用我们定义的消息监听...

    Spring+SpringMvc+Mybatis整合实例模板代码分享

    5. 数据源配置:配置数据库连接信息,如JNDI数据源或直接在Spring配置文件中定义DataSource。 6. Mapper配置:为每个DAO接口创建对应的Mapper XML文件,编写SQL语句,并在接口上使用@Mapper注解。 7. Service层:...

    spring-framework-3.0.2.RELEASE.zip

    8. **Spring Test**:提供了对单元测试和集成测试的支持,可以帮助开发者编写和执行测试用例。 9. **Spring Aspects**:包含了对AspectJ的集成,用于更高级的AOP需求。 在实际开发中,你会看到如`spring-context`,...

    Spring整合Hibernate.jar

    7. **整合测试**:编写JUnit测试用例,确保Spring和Hibernate的整合工作正常。使用`@Transactional`注解开启事务,`@Autowired`注入SessionFactory或HibernateTemplate。 8. **事务管理策略**:了解并选择适合的...

    图解MyEclipse配置struts+hibernate+spring.doc

    在Spring的配置文件中,我们需要配置数据源(如JNDI数据源或直接配置连接池),并创建SessionFactory bean,指定Hibernate配置文件的位置。 9. **编写业务逻辑和DAO** 创建业务接口和实现类,以及对应的Hibernate...

    ibaits+spring的整合

    4. **测试事务**:编写测试用例,验证事务的正确性。例如,当一个事务中的操作发生异常时,所有更改应被回滚。 通过上述配置,Ibatis与Spring的整合可以带来更高效的数据库操作,而WebLogic的JTA事务管理则保证了在...

    Spring3.x企业应用开发实战(完整版) part1

    2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 UserService 2.4.2 在Spring中装配Service 2.4.3 单元测试 2.5 展现层 ...

    cxf多数据源配置

    6. **测试与监控**:最后,别忘了编写测试用例来验证多数据源配置的正确性,并使用监控工具(如Spring Actuator)监控数据源的使用情况,确保系统的稳定运行。 综上所述,"cxf多数据源配置"是一个涉及CXF、Spring和...

    Spring2[1].5.2中文帮助文档

    Spring提供了一系列工具和注解,如`@RunWith(SpringRunner.class)`、`@SpringBootTest`等,支持开发者编写集成测试用例,确保应用在不同环境下的一致性和稳定性。 ### 总结 Spring 2.5.2版本的中文帮助文档是一个...

    java Web测试笔试.zip

    测试时,需要了解如何配置和使用Spring测试框架,如Spring Test和Mockito。 7. **Ajax**:Asynchronous JavaScript and XML,用于创建异步Web应用,提升用户体验。测试Ajax请求需要掌握相关工具,如Chrome开发者...

    如何配置SSM框架.pdf

    7. **测试与运行**:编写测试用例确保配置正确,然后启动应用服务器,如Tomcat或Jetty,运行项目。 在数据库方面,SSM框架中的MyBatis允许开发者通过编写SQL语句来操作数据库,同时提供了一种灵活的映射机制,将SQL...

    spring jpa

    10. **集成测试**:Spring Test 模块提供对 Spring JPA 的支持,简化了数据库测试,可以使用 @Transactional 测试注解来确保每个测试用例都在独立的事务中运行,测试结束后自动回滚。 标签 "源码" 和 "工具" 暗示...

    Spring 使用ActiveMQ 收发消息实例

    总结来说,Spring与ActiveMQ的结合为Java应用提供了强大的消息处理能力,通过简单的配置和API调用即可实现复杂的消息通信需求。在实际开发中,我们应充分利用Spring JMS模块的便利性和ActiveMQ的高性能特性,确保...

    spring4+hib4+struts2.3.15 全包整合

    - **JUnit测试**:JUnit是Java单元测试的标准框架,用于编写和执行测试用例,确保代码的质量和稳定性。 - **JSON**:JavaScript Object Notation,是一种轻量级的数据交换格式,常用于前后端之间的数据传输。 - **C3...

    webservice-simple-example

    虽然具体的代码实现没有给出,但根据提供的文件名 "example",我们可以推测这个压缩包可能包含了一个简单的 JAX-WS Web 服务项目,其中包括源代码、配置文件、测试用例等。通过分析和运行这个示例,开发者可以深入...

    SpringMVC-SpringSecurity-MySql-Hibernate

    模板使用 ,测试用例使用Junit 。 此外,我在该项目中添加了用法示例。 将Spring Form Elements与JSP页面和MVC概念结合使用的最佳实践。 具有服务层和控制器对象的Spring MVC模式。 在带有Hibernate的MySql上...

Global site tag (gtag.js) - Google Analytics