建设部网站为什么打不开,黄骅网站建设,企业外贸网站推广,网站建设申请域名Spring Boot是一个很好的框架#xff0c;可在开发Spring应用程序时为开发人员节省大量时间和精力。 它的主要功能之一是数据库初始化。 您可以使用spring boot来初始化您的sql数据库。 我们将从gradle文件开始 group com.gkatzioura
version 1.0-SNAPSHOTapply plugin: java… Spring Boot是一个很好的框架可在开发Spring应用程序时为开发人员节省大量时间和精力。 它的主要功能之一是数据库初始化。 您可以使用spring boot来初始化您的sql数据库。 我们将从gradle文件开始 group com.gkatzioura
version 1.0-SNAPSHOTapply plugin: javasourceCompatibility 1.5buildscript {repositories {mavenCentral()}dependencies {classpath(org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE)}
}apply plugin: idea
apply plugin: java
apply plugin: spring-bootrepositories {mavenCentral()
} dependencies {compile(org.springframework.boot:spring-boot-starter-web) {exclude module: spring-boot-starter-tomcat}compile(org.springframework.boot:spring-boot-starter-jetty)compile(org.springframework:spring-jdbc)compile(org.springframework.boot:spring-boot-starter-actuator)compile(com.h2database:h2:1.4.191)testCompile group: junit, name: junit, version: 4.11
} 要特别注意org.springframeworkspring-jdbc依赖项。 实际上这是有助于数据库初始化的依赖项。 对于该示例H2数据库已绰绰有余。 应用程序主类 package com.gkatzioura.bootdatabaseinitialization;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;/*** Created by gkatzioura on 29/4/2016.*/
SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication springApplication new SpringApplication();ApplicationContext applicationContext springApplication.run(Application.class,args);}} 下一步是指定数据源 package com.gkatzioura.bootdatabaseinitialization.config;import org.h2.jdbcx.JdbcDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;/*** Created by gkatzioura on 29/4/2016.*/
Configuration
public class DataSourceConfig {private static final String TEMP_DIRECTORY System.getProperty(java.io.tmpdir);Bean(name mainDataSource)public DataSource createMainDataSource() {JdbcDataSource ds new JdbcDataSource();ds.setURL(jdbc:h2:TEMP_DIRECTORY/testdata;MODEMySQL);return ds;}} 我们将schema.sql文件添加到资源文件夹中以便将其加载到classpath中。 schema.sql文件将包含数据库所需的所有表定义。 CREATE TABLE IF NOT EXISTS Users (user_id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(200) NOT NULL,PRIMARY KEY (user_id)
); 下一个要添加的文件是resources文件夹上的data.sql。 该文件将包含填充数据库所需的sql语句。 INSERT INTO Users (user_id,name) VALUES (null,nick);
INSERT INTO Users (user_id,name) VALUES (null,george); 在初始化时spring boot将搜索data.sql和schema.sql文件并使用数据库初始化程序执行它们。 到目前为止还不错但是当您定义了两个数据源时事情就变得复杂了。 我们将添加辅助数据源 package com.gkatzioura.bootdatabaseinitialization.config;import org.h2.jdbcx.JdbcDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;/*** Created by gkatzioura on 29/4/2016.*/
Configuration
public class DataSourceConfig {private static final String TEMP_DIRECTORY System.getProperty(java.io.tmpdir);Bean(name mainDataSource)public DataSource createMainDataSource() {JdbcDataSource ds new JdbcDataSource();ds.setURL(jdbc:h2:TEMP_DIRECTORY/testdata;MODEMySQL);return ds;}Bean(name secondaryDataSource)public DataSource createSecondaryDataSource() {JdbcDataSource ds new JdbcDataSource();ds.setURL(jdbc:h2:TEMP_DIRECTORY/secondarydata;MODEMySQL);return ds;}
} 通过启动应用程序我们得到一个错误 Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: mainDataSource,secondaryDataSource 问题在于数据源初始化程序注入了数据源。 因此我们必须指定数据源注入否则将获得异常。 一种解决方法是指定哪个数据源bean是主要的。 Bean(name mainDataSource)Primarypublic DataSource createMainDataSource() {JdbcDataSource ds new JdbcDataSource();ds.setURL(jdbc:h2:TEMP_DIRECTORY/testdata;MODEMySQL);return ds;} 这样初始化程序将使用mainDataSource bean运行schema.sql和data.sql脚本。 Spring Boot数据库的另一个重要功能是初始化它可以与flyway集成。 在此处获取有关飞行路线的更多信息。 您可以在这里找到项目源代码 翻译自: https://www.javacodegeeks.com/2016/05/spring-boot-database-initialization.html