Git Product home page Git Product logo

spring-boot-doma2-sample's Introduction

Spring Boot Sample Application

Java CI with Gradle Documentation Status

ローカル環境

アプリケーションの起動

管理側

$ ./gradlew :sample-web-admin:bootRun

フロント側

$ ./gradlew :sample-web-front:bootRun

API

$ ./gradlew :sample-web-api:bootRun

バッチ

$ # 担当者マスタ取込バッチを起動する
$ ./gradlew :sample-batch:bootRun --args="--spring.batch.job.name=importStaffJob"

$ # 顧客マスタ取込バッチを起動する
$ ./gradlew :sample-batch:bootRun --args="--spring.batch.job.name=importUserJob"

$ # バースデーメール送信キュー登録バッチを起動する
$ ./gradlew :sample-batch:bootRun --args="--spring.batch.job.name=birthdayMailJob"

$ # メール送信バッチを起動する
$ ./gradlew :sample-batch:bootRun --args="--spring.batch.job.name=sendMailJob"

接続先情報

テストユーザー [email protected] / passw0rd

接続先 URL
管理側画面 http://localhost:18081/admin
API http://localhost:18082/api/v1/users
フロント側 http://localhost:18080/

データベース接続先

mysql -h 127.0.0.1 -P 3306 -uroot -ppassw0rd spring-boot-doma2-sample

ブラウザを用いた自動テスト(結合テスト)

実行方法

テスト対象 実行方法
管理側画面 gradlew :it/sample-web-admin:test
フロント側 gradlew :it/sample-web-front:test

※ IntelliJから起動する場合は他のテストと同様にテストクラスを選択して実行してください

CIなどで結合テストを行わない場合は以下のようにして対象から外します

$ ./gradlew clean test --info -x :it/sample-web-admin:test -x :it/sample-web-front:test

コード自動生成(おまけ)

$ cd /path/to/spring-boot-doma2-sample
$ ./gradlew codegen -PphysicalFunctionName=client -PphysicalMultiFunctionName=clients -PlogicalFunctionName=取引先 [-Ptarget=dao|entity|repository|service|controller|html]

参考

プロジェクト 概要
Lombok Project 定型的なコードを書かなくてもよくする
Springframework Spring Framework
Spring Security セキュリティ対策、認証・認可のフレームワーク
Doma2 O/Rマッパー
spring-boot-doma2 Doma2とSpring Bootを連携する
Flyway DBマイグレーションツール
Thymeleaf テンプレートエンジン
Thymeleaf Layout Dialect テンプレートをレイアウト化する
WebJars jQueryなどのクライアント側ライブラリをJARとして組み込む
ModelMapper Beanマッピングライブラリ
Ehcache キャッシュライブラリ
Spock テストフレームワーク
Mockito モッキングフレームワーク

spring-boot-doma2-sample's People

Contributors

fumihiro-sunada avatar hideki-terashima avatar miyabayt avatar renovate[bot] avatar takehiro-miyabayashi avatar takeshi-hirosue avatar talklikeacat avatar terahide avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spring-boot-doma2-sample's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update plugin com.avast.gradle.docker-compose to v0.17.8
  • chore(deps): update plugin org.springframework.boot to v3.2.10
  • fix(deps): update dependency net.sf.jasperreports:jasperreports to v6.21.3
  • fix(deps): update dependency org.modelmapper:modelmapper to v3.2.1
  • chore(deps): update plugin org.springframework.boot to v3.3.3
  • fix(deps): update dependency org.apache.commons:commons-text to v1.12.0
  • fix(deps): update dependency org.apache.poi:poi to v5.3.0
  • fix(deps): update dependency org.apache.poi:poi-ooxml to v5.3.0
  • fix(deps): update dependency org.seasar.doma.boot:doma-spring-boot-starter to v1.8.0
  • fix(deps): update dependency org.webjars:jquery-validation to v1.20.0
  • fix(deps): update dependency org.webjars:momentjs to v2.30.1
  • fix(deps): update domaversion to v2.62.1 (minor) (org.seasar.doma:doma-processor, org.seasar.doma:doma-slf4j, org.seasar.doma:doma-core)
  • chore(deps): update mysql docker tag to v9
  • fix(deps): update dependency com.ibm.icu:icu4j to v75
  • fix(deps): update dependency net.sf.jasperreports:jasperreports to v7
  • fix(deps): update dependency org.flywaydb.flyway-test-extensions:flyway-spring-test to v10
  • fix(deps): update dependency org.seasar.doma.boot:doma-spring-boot-starter to v2
  • fix(deps): update dependency org.seleniumhq.selenium:htmlunit-driver to v4
  • fix(deps): update domaversion to v3 (major) (org.seasar.doma:doma-processor, org.seasar.doma:doma-slf4j, org.seasar.doma:doma-core)
  • 🔐 Create all rate-limited PRs at once 🔐

Pending Status Checks

These updates await pending status checks. To force their creation now, click the checkbox below.

  • chore(deps): update plugin com.diffplug.spotless to v6.25.0
  • chore(deps): update plugin com.github.ben-manes.versions to v0.51.0
  • chore(deps): update plugin org.owasp.dependencycheck to v9.2.0
  • chore(deps): update plugin org.owasp.dependencycheck to v10

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose.yml
  • mysql 8
github-actions
.github/workflows/gradle.yml
  • actions/checkout v4
  • actions/setup-java v4
gradle
gradle.properties
  • org.springframework.boot 3.2.4
  • com.diffplug.spotless 6.18.0
  • org.spockframework:spock-core 2.4-M4-groovy-4.0
  • org.spockframework:spock-spring 2.4-M4-groovy-4.0
settings.gradle
build.gradle
  • com.google.cloud.tools:jib-spring-boot-extension-gradle 0.1.0
  • org.owasp.dependencycheck 9.0.10
  • org.domaframework.doma.compile 2.0.0
  • com.google.cloud.tools.jib 3.2.1
  • com.avast.gradle.docker-compose 0.17.6
  • com.github.ben-manes.versions 0.50.0
buildSrc/gradle.properties
  • org.springframework.boot 3.2.4
buildSrc/build.gradle
it/build.gradle
it/sample-web-admin/gradle.properties
  • org.seleniumhq.selenium:selenium-java 3.141.59
it/sample-web-admin/build.gradle
  • com.codeborne:selenide 7.0.6
it/sample-web-front/gradle.properties
  • org.gebish:geb-spock 7.0
  • org.seleniumhq.selenium:selenium-chrome-driver 3.141.59
  • org.seleniumhq.selenium:selenium-firefox-driver 3.141.59
  • org.seleniumhq.selenium:selenium-remote-driver 3.141.59
  • org.seleniumhq.selenium:selenium-support 3.141.59
  • org.seleniumhq.selenium:selenium-api 3.141.59
it/sample-web-front/build.gradle
  • org.seleniumhq.selenium:htmlunit-driver 3.64.0
sample-batch/gradle.properties
sample-batch/build.gradle
sample-common/gradle.properties
sample-common/build.gradle
  • org.apache.commons:commons-text 1.11.0
  • org.apache.commons:commons-compress 1.25.0
  • org.apache.commons:commons-digester3 3.2
  • commons-io:commons-io 2.15.1
  • com.ibm.icu:icu4j 74.2
sample-domain/gradle.properties
  • org.seasar.doma.boot:doma-spring-boot-starter 1.7.0
  • org.seasar.doma:doma-core 2.54.2
  • org.seasar.doma:doma-slf4j 2.54.2
  • org.seasar.doma:doma-processor 2.54.2
sample-domain/build.gradle
  • org.modelmapper:modelmapper 3.2.0
  • org.flywaydb.flyway-test-extensions:flyway-spring-test 9.5.0
sample-web-admin/gradle.properties
sample-web-admin/build.gradle
  • org.webjars:bootstrap 4.6.2
  • org.webjars:jquery 3.6.4
  • org.webjars:jquery-validation 1.19.5
  • org.webjars:bootstrap-daterangepicker 3.1
  • org.webjars:momentjs 2.29.4
  • org.webjars:AdminLTE 3.2.0
  • org.webjars:font-awesome 5.15.4
  • org.webjars:dropzone 5.9.2
  • org.flywaydb.flyway-test-extensions:flyway-spring-test 9.5.0
sample-web-api/gradle.properties
sample-web-api/build.gradle
sample-web-base/gradle.properties
sample-web-base/build.gradle
  • org.modelmapper:modelmapper 3.2.0
  • net.sf.jasperreports:jasperreports 6.21.2
  • org.apache.poi:poi 5.2.5
  • org.apache.poi:poi-ooxml 5.2.5
sample-web-front/gradle.properties
sample-web-front/build.gradle
  • org.webjars:bootstrap 3.3.7-1
  • org.webjars:jquery 3.6.4
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.5

  • Check this box to trigger a request for Renovate to run again on this repository

builderror

/home/travis/build/miyabayt/spring-boot-doma2-sample/sample-web-base/src/main/java/com/sample/web/base/aop/SetModelAndViewInterceptor.java:70: error: Cannot use 'val' here because initializer expression does not have a representable type: Type cannot be resolved
val codeCategories = codeCategoryService.fetchAll();
^
1 error
1 warning
:sample-web-base:compileJava FAILED

docker builderror

Couldn't find index page for 'supervisor' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
No local packages or download links found for supervisor
error: Could not find suitable distribution for Requirement.parse('supervisor')
The command '/bin/sh -c easy_install supervisor' returned a non-zero code: 1
The command "docker build -t sample ./docker" failed and exited with 1 during .
Your build has been stopped.

Can I change to oracle database?

This is great doma2 sample but Could you please tell me.
Can I switch to oracle database in this sample? and How to do that? Please advise me.

本サンプルに関する質問

発生している問題

問題は起こっているというべきかどうかわかりません。
少なくともサンプルの実装の説明通りに動いています。

よくわかっていない部分

書籍を参考にスプリングの機能について学んでいます。
提供されているサンプルプロジェクトをgit cloneし、書籍の説明通りにgradleでビルドしてもエラー表示されており、一見動かないように思えます(ビルド自体はサクセスで終了)
例えばパッケージエクスプローラで見てみても赤の警告だらけです(problemsタブにはエラーが3800程)
しかし、gradleタスクウィンドウ?で表示すると全く問題が起きていないような表示で、実際問題なく動きます。
IDE(eclipse)のrun機能で動かそうとすると、spring applicationとして実行することはできなくて(そもそもメイン関数が認識されていない?)gradle taskとして起動します
###聞きたいこと
自分でもよくわかっていない部分が多いため聞きたいことがはっきりとしませんが、上記の現象は一体どういう事なんでしょうか。
また、このサンプルを参考に取り入れたい機能があったんですが、自分のspring projectに取り入れたところうまく動きませんでしたが、上記のgradleで動くけどspring applicationとして動かせないことと関係があるのでしょうか。

補足情報(FW/ツールのバージョンなど)

取り入れたい機能とは、二重送信防止の機能です
サンプルは、spring boot2、java1.8(書籍では11推奨)、docker、eclipse(書籍ではintellij推奨)、gradle(5以上推奨?)で動かしていて、
本プロジェクトは、spring boot2、java1.8、postgreSQL 10、eclipse、gradle(ただ、起動の際はgradleタスクではなくspring applicationとして)で動かしています

spock実行エラー

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'loginService': Unsatisfied dependency expressed through field 'pageFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.sample.domain.dto.common.PageFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 14 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.sample.domain.dto.common.PageFactory' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
	... 32 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.