为什么使用@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>




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();
    }
}

spring包扫描加上了吗,并且你用main方法是测试不出来的