你好,我最近的一个项目中希望在Spring MVC框架下利用JFinal的数据库操作功能。在XML中我成功配置了数据源,但是对JFinal进行数据库初始化操作的时候出现Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Config already exists: main 错误,请问是什么原因?具体代码和XML配置如下:
@Component
public class ActiveRecordConfig{
// 测试所用jfinal model
@Autowired private DruidDataSource DSTestFilght;
@Bean(initMethod="start", destroyMethod="stop")
public ActiveRecordPlugin init() {
// 加载FRAMS数据库内容
ActiveRecordPlugin arpFRAMS = new ActiveRecordPlugin(DSTestFilght);
arpFRAMS.setDialect(new SqlServerDialect());
arpFRAMS.addMapping("RawFileInfo", "OF_ID", RawFileInfoModel.class);
return arpFRAMS;
}
}
<bean id="DSTestFilght" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 基本属性 url、user、password -->
<property name="url" value="${FRAMS.url}" />
<property name="username" value="${FRAMS.username}" />
<property name="password" value="${FRAMS.password}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
<property name="filters" value="stat" />
</bean>
项目:JFinal
其他地方会不会也配置了默认名称为main的recordplugin呢?
试试ActiveRecordPlugin arpFRAMS = new ActiveRecordPlugin("这里添加一个名称,不过感觉解决不了根本问题",DSTestFilght);