2016-03-18 3 views
0

Я создаю приложение REST с помощью Springboot. После некоторых исследований я добавил JdbcTemplate, а не работал непосредственно с Jdbc и наборами результатов. У меня есть следующая конфигурация в application.properties.JdbcTemplate не работает с autowiring

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 имеет следующий код

@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, поэтому я пошел за файлом свойств.

ответ

1

Bar не является фасолью.

Чтобы получить его работу, вы можете аннотировать Bar с @Component и autowire его в LosController, а не создавать с 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; 
    } 
} 
+0

, которые дают мне другую ошибку 'вложенной исключение org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационная рожкового типа [org.springframework.jdbc.core.JdbcTemplate] не найдено для зависимостей: ожидается, по крайней мере, 1 боб который квалифицируется как кандидат autwire для этой зависимости'. Полное сообщение об ошибке больше, но из того, что я понимаю, он не может создать JdbcTemplate bean – mahacoder

+0

, чтобы проверить, что пакет, в котором находится реализация, проверен (проверьте свой ZaoTaoBao

+0

@ ZaoTaoBao реализации чего? Мой класс приложения просто аннотируется с помощью '@ SpringBootApplication' – mahacoder

Смежные вопросы