Я новичок в Spring, я следую некоторым примерам из книг и учебных пособий на веб-сайте Spring, и я не могу заставить свой код работать.
Я пытаюсь получить доступ к базе данных, используя JdbcTemplate.Вот как выглядит мой root-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db" />
<property name="username" value="userr" />
<property name="password" value="password" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
<bean id="myDao" class="com.me.myproj.persistence.JdbcMyaDao">
<property name="dataSource" ref="dataSource"/>
</bean>
Это мой JdbcMyDao (все операции импорта выполнены, я не буду их вставлять):
public class JdbcMyDao implements MyDao{
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public String getOpcionById(){
String SQL_Q="select name from options where id=35";
return (String)this.jdbcTemplate.queryForObject(SQL_Q, String.class);
}
}
Наконец, мой контроллер:
@Controller
public class myController {
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String show(Model model){
JdbcMyDao daoP=new JdbcMyDao();
String op=daoP.getOpcionById();
model.addAttribute("op",op);
return "show";
}
}
Хорошо, тогда show.jsp просто печатает возвращаемую строку.
Итак, это оченьпростой доступ к базе данных, но я получаю исключение nullPointerException при использовании JdbcTemplate (в функции getOpcionById)
Я думаю, это потому, что функция setDataSource никогда не запускается, я думал, что Spring запускает ее с помощью IoC,Я пытался поместить @Autowired в свойство jdbcTemplate i JdbcMyDao, но это тоже не сработало.Может кто-нибудь сказать мне, что делает Spring и какие шаги мне делать?Или какие изменения я должен сделать и почему?