java - JdbcTemplate 不支持 Autowiring

标签 java spring-mvc spring-boot jdbctemplate

我正在使用 Springboot 创建一个 REST 应用程序。经过一些研究后,我向其中添加了 JdbcTemplate,而不是直接使用 Jdbc 和结果集。我在application.properties中有以下配置。

server.context-path=/foo
spring.datasource.driverClassName=com.teradata.jdbc.TeraDriver
spring.datasource.url=jdbc:teradata://url
spring.datasource.username=root
spring.datasource.password=root

我的 REST Controller 具有以下代码

@RestController
public class LosController {

    @CrossOrigin
    @RequestMapping("/bar")
    public String Bar(){
        Gson gson = new Gson();
        Bar bar = new Bar();
        response = gson.toJson(bar.getData());
        return response;
    }

在这个对象中,我有

public class Bar {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<BarObject> getData(){
        String selectSql = "SELECT * FROM BAR";
        System.out.println(selectSql);
        System.out.println(jdbcTemplate.getDataSource().toString());

        List<BarObject> barObjs = jdbcTemplate.query(selectSql, new BarMapper());       

        return barObjs;
    }
}

我经历过这个link并按照上述配置了所有内容。我能够看到System.out.println(selectSql ) 在职的。但在下一行,我得到了 null pointer exception 。所以我的感觉是 JdbcTemplate 对象没有获取数据。我怎样才能让它发挥作用?我试图不使用任何 xml 配置,这就是我选择属性文件的原因。

最佳答案

Bar 不是 spring bean。

要使其正常工作,您可以使用 @Component 注释 Bar 并在 LosController 中 Autowiring 它,而不是使用 new< 创建.

@RestController
public class LosController {

    @Autowired
    private Bar bar;

    @CrossOrigin
    @RequestMapping("/bar")
    public String Bar(){
        Gson gson = new Gson();
        response = gson.toJson(bar.getData());
        return response;
    }
}

@Component
public class Bar {

    @Autowired
    private JdbcTemplate jdbcTemplate;


    public List<BarObject> getData(){
        String selectSql = "SELECT * FROM BAR";
        System.out.println(selectSql);
        System.out.println(jdbcTemplate.getDataSource().toString());

        List<BarObject> barObjs = jdbcTemplate.query(selectSql, new BarMapper());       

        return barObjs;
    }
}

关于java - JdbcTemplate 不支持 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36079762/

相关文章:

spring-boot - Spring Boot 2.0 禁用默认安全性

java - RxJava : Observing messages emitted from a socket

java - 通过索引为 0 的构造函数参数表示的不满足依赖关系

java - 如何在 JUNIT 的wiremock 中匹配精确的 json

java - Thymeleaf 模板中的迭代不起作用

java - spring security 不符合自动代理的条件

java - 如何配置 Spring Boot 以允许 Wicket 的文件上传?

java - 从 mysql 数据库列接收到某些数据后,如何更改 recyclerview 中特定卡片的颜色

Java 类型推断在编译时失败,但 Eclipse 编译并运行得很好

java - 处理文档队列时在线程之间划分工作的最佳方式