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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题