我刚刚查看了Spring Greenhouse项目,作为学习Spring Security的第一步。 该项目工作正常,但我想知道以下情况:
有两种配置:标准配置和嵌入式配置。 javadoc说嵌入式是默认的。我不知道如何让它在标准模式下运行。有没有人以前试过这个?
其次在嵌入式模式下,我使用以下代码稍微修改了代码,以便使用MySql运行它,但令我惊讶的是应用程序根本没有启动。它会引发以下错误:
throw new RuntimeException("Unable to determine database version", e);
@Bean(destroyMethod="shutdown")
public DataSource dataSource() {
// EmbeddedDatabaseFactory factory = new EmbeddedDatabaseFactory();
// factory.setDatabaseName("greenhouse");
// factory.setDatabaseType(EmbeddedDatabaseType.);
DriverManagerDataSource mysqldataSource = new DriverManagerDataSource();
mysqldataSource.setDriverClassName("com.mysql.jdbc.Driver");
mysqldataSource.setUrl("jdbc:mysql://localhost/greenhouse?useConfigs=maxPerformance&characterEncoding=utf8");
mysqldataSource.setUsername("root");
mysqldataSource.setPassword("mysql");
return populateDatabase(mysqldataSource);
}
有人可以帮我吗?
答案 0 :(得分:0)
根据您获得的例外情况判断,您感兴趣的文件是GenericDatabaseUpgrader.java
超过一半的代码引用DatabaseVersion
,这是一个在缺席的情况下创建的表。
因为我怀疑你已经拥有它并且通过异常类型(SQLException
)来判断,所以我倾向于说它没有创建/插入/检索引用的表。
你可以查看你是否有桌子并从那里开始。
另外,根据您尝试注入的代码判断,我也会将connection = dataSource.getConnection()
视为可能的罪魁祸首。
P.S。关于标准/嵌入式,您可以在VM参数或maven设置之间切换。请检查the official forums and specifically this topic for info
答案 1 :(得分:0)
我自己想通了。 web.xml中有一个标签,我从那里更改为嵌入式标准。 问题是在sql查询中创建数据库版本表不是mysl投诉。还有其他查询也不是mysql投诉。我更改了sql查询,现在eveything像预期的那样工作。我接下来要做的是使用某种类型的通用数据库查询生成器,这样我就不必更改查询,如果将来我改变主意使用post gre sql代替我的sql。 感谢您的所有帮助和支持。