2700zc 2018-12-01 02:20 采纳率: 0%
浏览 1151
已采纳

为什么使用@Autowired注入xml里的BasicDataSource会出现空指针异常?

今天突然想不用mybatis只用Spring来调取mysql的链接,于是这样配置了下,发现在service的实现层获取不到链接,空指针异常,问题代码是出在 connection=ds.getConnection();这句话上 这是为什么?有大佬解决下吗?

        @Service

public class test_serviceIm implements test_service{

@Autowired
DataSource ds;
@Override
public String getString(int i) {
    Connection connection;
    ResultSet rs = null;
    PreparedStatement ps = null;
    String a = null;
    try {
        String sql="SELECT num FROM test_1  where id=?";
        System.out.println(999);
        connection=ds.getConnection();
        connection.prepareStatement(sql);
        ps.setInt(1, i);
        System.out.println(1111);
        while(rs.next()){
            a=rs.getString("num");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return a;

}
public static void main(String[] args) {
    test_serviceIm tsIm=new test_serviceIm();
    System.out.println(tsIm.getString(1));
}

}



``` <!-- 整合数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>




  • 写回答

2条回答

  • 爱码少年 2018-12-01 08:18
    关注

    main 方法测试 demo

    
    import java.util.Date;
    
    import org.apache.commons.lang3.RandomStringUtils;
    import org.apache.commons.lang3.RandomUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.support.GenericXmlApplicationContext;
    
    import com.fly.demo.entity.User;
    import com.fly.demo.service.UserService;
    
    /**
     * 
     * MainRun
     * 
     * @author 00fly
     * @version [版本号, 2018-11-01]
     * @see [相关类/方法]
     * @since [产品/模块版本]
     */
    public class MainRun
    {
        private static Logger logger = LoggerFactory.getLogger(MainRun.class);
    
        /**
         * main
         * 
         * @param args
         * @see [类、类#方法、类#成员]
         */
        public static void main(String[] args)
        {
            GenericXmlApplicationContext context = new GenericXmlApplicationContext();
            context.setValidating(false);
            context.load("classpath:/spring/spring.xml");
            context.refresh();
            int i = 1;
            for (String beanName : context.getBeanDefinitionNames())
            {
                logger.info("{}.\t{}", i, beanName);
                i++;
            }
            UserService userservice = context.getBean(UserService.class);
            if (userservice.selectCount(null) == 0)
            {
                for (i = 0; i < 10; i++)
                {
                    User user = new User();
                    user.setUsername("username_" + RandomStringUtils.randomAlphabetic(5));
                    user.setPassword("password_" + RandomStringUtils.randomAlphabetic(5));
                    user.setName("name_" + RandomStringUtils.randomAlphabetic(5));
                    user.setCreateDate(new Date());
                    user.setAge(RandomUtils.nextInt(10, 30));
                    user.setEnabled(true);
                    userservice.insert(user);
                }
            }
            userservice.testTrans();
            context.close();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 3月3日

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler