最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Spring Boot快速構(gòu)建基于SQLite數(shù)據(jù)源的應(yīng)用

 更新時間:2017年08月14日 11:34:14   作者:hwding  
為了提供一個單包易部署的服務(wù)器應(yīng)用,考慮使用Spring Boot,因為其集成了Apache Tomcat,易于運行,免去絕大部分了服務(wù)器配置的步驟

為了提供一個單包易部署的服務(wù)器應(yīng)用,考慮使用Spring Boot,因為其集成了Apache Tomcat,易于運行,免去絕大部分了服務(wù)器配置的步驟。

項目初始化

首先從mvn archetype:generate中選擇 com.github.mkspcd:simple-webapp(或其他webapp模版) 模版生成項目結(jié)構(gòu)。

更多關(guān)于maven請移步Maven - Users Centre

在pom.xml中添加parent來獲取Spring Boot所需的最小依賴。

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.hwding.example</groupId>
  <artifactId>example</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1</version>
  <name>an example</name>
  <url>https://github.com/hwding</url>
  <!-- 添加Spring的Repository以便于添加相關(guān)組件 -->
  <repositories>
    <repository>
      <url>http://repo.spring.io/milestone/</url>
      <id>repo-spring</id>
    </repository>
  </repositories>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
  </parent>
  <build>
    <finalName>example</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!-- 編譯級別,可選 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- 用于Hibernate4的SQLite3 Dialect -->
    <dependency>
      <groupId>com.enigmabridge</groupId>
      <artifactId>hibernate4-sqlite-dialect</artifactId>
      <version>0.1.2</version>
    </dependency>
    <!-- 用于配置數(shù)據(jù)源 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>javax.persistence</artifactId>
      <version>2.2.0-RC1</version>
    </dependency>
    <!-- SQLite3 驅(qū)動 -->
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.20.0</version>
    </dependency>
  </dependencies>
</project>

pom中同時添加了Hibernate以及Spring JPA等相關(guān)組件。

配置數(shù)據(jù)源

@Configuration
public class DataSourceConfiguration {
  @Bean(destroyMethod = "", name = "EmbeddeddataSource")
  public DataSource dataSource() {
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
    dataSourceBuilder.driverClassName("org.sqlite.JDBC");
    dataSourceBuilder.url("jdbc:sqlite:" + "example.db");
    dataSourceBuilder.type(SQLiteDataSource.class);
    return dataSourceBuilder.build();
  }
}

這里設(shè)置了該Bean的destroyMethod = ""是為了防止停止服務(wù)器時容器管理器兩次銷毀導(dǎo)致的異常,name = "EmbeddeddataSource"用于在自動裝配Bean時與其他dataSource加以區(qū)分。

為了使該獨立服務(wù)易部署易分發(fā),使用SQLite3作為數(shù)據(jù)存取的源,值得注意的是,該場景非常少見。

配置Spring Data JPA

@Configuration
@EnableJpaRepositories(
    basePackages = "com.github.hwding.example.data.repository",
    transactionManagerRef = "jpaTransactionManager",
    entityManagerFactoryRef = "localContainerEntityManagerFactoryBean"
)
@EnableTransactionManagement
public class JpaConfiguration {
  @Autowired
  @Bean
  public JpaTransactionManager jpaTransactionManager(@Qualifier(value = "EmbeddeddataSource") DataSource dataSource, EntityManagerFactory entityManagerFactory) {
    JpaTransactionManager jpaTransactionManager
        = new JpaTransactionManager();
    jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
    jpaTransactionManager.setDataSource(dataSource);
    return jpaTransactionManager;
  }
  @Autowired
  @Bean
  LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean(@Qualifier(value = "EmbeddeddataSource") DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
    LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean
        = new LocalContainerEntityManagerFactoryBean();
    localContainerEntityManagerFactoryBean.setDataSource(dataSource);
    localContainerEntityManagerFactoryBean.setPackagesToScan("com.github.hwding.example.data.model.local");
    localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
    return localContainerEntityManagerFactoryBean;
  }
  @Bean
  public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
    hibernateJpaVendorAdapter.setGenerateDdl(true);
    hibernateJpaVendorAdapter.setShowSql(true);
    hibernateJpaVendorAdapter.setDatabasePlatform("com.enigmabridge.hibernate.dialect.SQLiteDialect");
    return hibernateJpaVendorAdapter;
  }
}

注意Repository和Entity掃描的包路徑需要根據(jù)實際進行調(diào)整。

hibernateJpaVendorAdapter.setGenerateDdl(true);能夠在初次運行時自動根據(jù)Entity的定義生成DDL并自動創(chuàng)建SQLite3的 .db 數(shù)據(jù)文件,在本例中是 example.db ,DDL會最小程度的滿足Entity的定義;如果該文件已經(jīng)存在,則并不會對其進行覆蓋。

由于Hibernate并不對SQLite3提供支持,所以需要提供第三方Dialect給它:hibernateJpaVendorAdapter.setDatabasePlatform("com.enigmabridge.hibernate.dialect.SQLiteDialect");,這個類我們已經(jīng)在pom中引入了。

配置入口

@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class);
  }
}

Spring Boot能夠從JAR包的入口直接啟動整個應(yīng)用程序。

總結(jié)

以上所述是小編給大家介紹的使用Spring Boot快速構(gòu)建基于SQLite數(shù)據(jù)源的應(yīng)用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java結(jié)構(gòu)型設(shè)計模式之適配器模式詳解

    Java結(jié)構(gòu)型設(shè)計模式之適配器模式詳解

    適配器模式,即將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口的表示,主要目的是實現(xiàn)兼容性,讓原本因為接口不匹配,沒辦法一起工作的兩個類,可以協(xié)同工作。本文將通過示例詳細介紹適配器模式,需要的可以參考一下
    2022-09-09
  • idea注解參數(shù)換行時間日期格式設(shè)置方法

    idea注解參數(shù)換行時間日期格式設(shè)置方法

    這篇文章主要介紹了idea注解參數(shù)換行時間日期格式設(shè)置方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java面試題之基本語法(圖解)

    Java面試題之基本語法(圖解)

    這篇文章主要介紹了關(guān)于Java面試題之基本語法的相關(guān)資料,文中通過圖片說明介紹的很詳細,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02
  • Spring Boot統(tǒng)一異常處理最佳實踐(拓展篇)

    Spring Boot統(tǒng)一異常處理最佳實踐(拓展篇)

    這篇文章主要給大家介紹了關(guān)于Spring Boot統(tǒng)一異常處理最佳實踐(拓展篇)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Java世界時區(qū)自動計算及時間生成方法詳解

    Java世界時區(qū)自動計算及時間生成方法詳解

    這篇文章主要為大家詳細介紹了Java中世界時區(qū)自動計算及時間生成的方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Spring中@Configuration注解的使用場景

    Spring中@Configuration注解的使用場景

    這篇文章主要介紹了Spring中@Configuration注解的使用場景,@Configuration注解是從Spring?3.0版本開始加入的一個使Spring能夠支持注解驅(qū)動開發(fā)的標注型注解,主要用于標注在類上,需要的朋友可以參考下
    2023-11-11
  • 新手初學(xué)Java常見排序算法

    新手初學(xué)Java常見排序算法

    排序(Sorting) 是計算機程序設(shè)計中的一種重要操作,它的功能是將一個數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個關(guān)鍵字有序的序列
    2021-07-07
  • Java對象進行深拷貝的五種方法實例代碼

    Java對象進行深拷貝的五種方法實例代碼

    這篇文章主要介紹了Java對象進行深拷貝的五種方法,分別是構(gòu)造函數(shù)、重載clone()方法、Apache?Commons?Lang序列化、Gson序列化和Jackson序列化,每種方法都給出了實例代碼,需要的朋友可以參考下
    2025-04-04
  • spring本地事務(wù)失效的原因分析

    spring本地事務(wù)失效的原因分析

    這篇文章給大家介紹了spring本地事務(wù)失效的情況原因分析,給大家羅列了五種原因分析,通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • IntelliJ Idea SpringBoot 數(shù)據(jù)庫增刪改查實例詳解

    IntelliJ Idea SpringBoot 數(shù)據(jù)庫增刪改查實例詳解

    SpringBoot 是 SpringMVC 的升級,對于編碼、配置、部署和監(jiān)控,更加簡單。這篇文章主要介紹了IntelliJ Idea SpringBoot 數(shù)據(jù)庫增刪改查實例,需要的朋友可以參考下
    2018-02-02

最新評論

南城县| 南投县| 闵行区| 犍为县| 自贡市| 富源县| 古蔺县| 沾化县| 武功县| 永嘉县| 呼伦贝尔市| 曲松县| 保靖县| 尉氏县| 射洪县| 舒兰市| 辛集市| 会泽县| 通榆县| 当雄县| 商河县| 尼勒克县| 农安县| 德钦县| 萍乡市| 阜南县| 瑞丽市| 阿鲁科尔沁旗| 运城市| 武宣县| 镇坪县| 衡阳市| 五台县| 潜山县| 林州市| 西乌珠穆沁旗| 库车县| 瑞金市| 洪江市| 慈利县| 习水县|