質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

3回答

10115閲覧

spring環境でのバッチ処理の今時の実装は?

yoshihiro_yy

総合スコア27

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2017/08/22 23:36

職場でspring環境でのWebアプリを作っています。

プライベートでも勉強がてらspring環境でWebアプリを作っております。

定時処理として、毎月○日の△時にこの処理をする、という事をしたいと思ったのですが、どう実装するのが今時風なんでしょうか。

職場では、サーバー(Linux)側からクーロンで決められた時間に.shを呼んで、その中に対象の処理のJavaが記述されている感じです。

ただ古いシステムなので今時ならこうする、とかあれば知りたいなと思い質問しました。

同じspringにspring batchという物もあるようですし、これを組み合わせるのが良さそうでしょうか?
(まだついさっき名前を知った程度の知識です…)

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

自己解決

何か妙案が他にもあるかなと思い放置気味になってしまいましたが、結果としてまずは基本を押さえようと思い、今回はピュアなJavaで処理を作り、それをshell(cron)で呼ぶようにしました。

しかしcronの記述やcron自身の管理方法など課題が見えてきましたので、今後の開発時にご回答頂いた内容を検討していこうと思います。

ありがとうございました。

投稿2017/09/27 11:07

yoshihiro_yy

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Spring Batch が使えるには使えます。

java

1public class Application implements CommandLineRunner { 2 public static void main(String[] args) { 3 SpringApplication application = new SpringApplication(Application.class); 4 application.setWebEnvironment(false); 5 ApplicationContext context = application.run(); 6 SpringApplication.exit(context); 7 } 8 9 public void run(String... args) throws Exception { 10 // ここに実装 11 } 12}

サービス層やリポジトリが使えるのでモックも作りやすく試験もしやすくだいぶ書きやすくなったので良いのですが、いかんせん起動が遅いです。リポジトリがテーブル構造を把握するまで時間が掛かりログに Spring のロゴが出てくるまで処理が開始しません。ですので常駐バッチを作るのであれば良いですが、決まった時間丁度に単発起動するバッチには向きません。

投稿2017/08/23 00:52

編集2017/08/23 00:54
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshihiro_yy

2017/08/24 14:30

なるほど。まだSpringBatchのことを調べていないので恐縮ですが、私がイメージしているCronからシェルを決まった時間に呼び出す、とは概念が違う感じですかね。 そうなると決まった時間に単発でちょっとした処理(毎月1日に特定の宛先に特定のメールを送信するとか)は別で実装したほうが良いかもしれないんですかね。 どちらにせよSpringBatch、勉強してみます。ありがとうございます。
guest

0

もし既にSpring frameworkを使ったアプリケーションがあるのでしたら、既存のソース・特にServiceやRepositoryの流用がSpringBatchからできますので、非常に良いと思います。

起動サイクルが60秒くらいの小さな常駐処理も簡単に作れますし、シェルでごりごり処理を書かずともJava(Spring)で統一できるメリットがあるでしょうか。

あとはインフラとの兼ね合い、死活監視なども鑑みて、選択されると良いかと思います。

参考までに。

投稿2017/08/23 00:21

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshihiro_yy

2017/08/24 14:28

なるほど、やはり同じSpringで合わせるといい感じなんですね。 SpringBatch、もっと詳しく調べてみようと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問