我正在创建一个Spring MVC应用程序,该应用程序与MySQL数据库建立了数据库连接。我已经使用过基于Java的配置。但是我不知道为什么DataSoruce
即将到来null
。
有人可以告诉我我在做什么错吗?
我在其中配置前端控制器的类。
public class FontControllerConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { WebMvcConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
我必须启用Spring MVC功能的类。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "controller")
public class WebMvcConfig {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver vr = new InternalResourceViewResolver();
// set location of views.
vr.setPrefix("/");
// set the extension of views.
vr.setSuffix(".jsp");
return vr;
}
}
创建数据库连接
public class DbManager {
@Bean
public BasicDataSource getDataSource() {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/local");
bds.setUsername("root");
bds.setPassword("");
return bds;
}
@Autowired
private DataSource ds;
public void setDs(DataSource ds) {
this.ds = ds;
}
public Connection conn() throws SQLException {
Connection conn = ds.getConnection();
return conn;
}
}
以及处理用户请求以检查连接是否建立的最终控制器类。
@Controller
public class MyController {
@RequestMapping("/check")
public ModelAndView greet() throws SQLException {
DbManager dbMan = new DbManager();
if (dbMan.conn() != null) {
return new ModelAndView("welcome", "msg", "SUCCESS");
} else {
return new ModelAndView("welcome", "msg", "FAIL");
}
}
}
预先感谢:)
答案 0 :(得分:0)
当您自己实例化DbManager时,spring无法拦截并为您自动布线。因此,数据源将为空。
要解决此问题:
希望这会有所帮助
Matthias
答案 1 :(得分:0)
可以看到的错误是您错过了DbManager.class上的@Configuration批注
我要指出的另一件事是“ setDs”方法,您不需要它,因为这基本上是@Autowired所做的,这也是您的下一个错误,您必须从spring获取DbManager的实例使用@Autowired。
@Autowired
private DataSource dbMan;
@RequestMapping("/check")
public ModelAndView greet() throws SQLException {
//DbManager dbMan = new DbManager();
if (dbMan.conn() != null) {
return new ModelAndView("welcome", "msg", "SUCCESS");
} else {
return new ModelAndView("welcome", "msg", "FAIL");
}
}
如果仍然没有建立连接,请确保。