この記事について 事ある度に書いたり言ったりしている通り、2020年を迎えようとしている現在でも、信頼できるSpring関連書籍は下記の2冊しかありません。 Spring徹底入門 改訂新版Spring入門 2冊(以下「書籍」)とも超良書なのですが、どちらもリリースされたのが2016年で、対応しているSpringのバージョンが4.2と古くなっています。 2019年末時点での最新版はSpring 5.2です。この記事では、上記書籍を令和の今読む際、特に気をつけるべき点をいくつか紹介していきます。 4.x->5.xの差分すべてについては、GitHubのWikiを確認してください。 JDKは8以上を使うべし Spring 5.0以降から、JDKのベースラインが8になりました(Spring 4はJDK 6ベース)。今からSpringを使おうと言う人が、JDK 6とか7を使おうとはしないと思いますが・
ご訪問いただいたお客様へのお知らせ アクセスいただいたWebサービスは提供を終了いたしました。 長年にわたり、多くの皆様にご利用いただきましたことを心よりお礼申し上げます。 ODNトップページへ
Laravelで開発しててDIコンテナに出くわし、そういえばRailsで開発していてDI利用したことなかったなと思ったので、なぜRuby(Rails)でDIが一般的ではないのかのまとめる。 TL;DR Rubyはインスタンスへの依存性も動的に変更できるから基本的にDI不要 ほぼ下記記事参照なので、英語できる人はこっちの記事をどうぞ LEGOs, Play-Doh, and Programming DI DI(Dependency Injection)は依存性の注入とよばれるインスタンス間の依存性を解消する技術。外部から依存するインスタンスを注入できるのでテストのときにモックオブジェクトの差し替えなどで便利。またDIフレームワークはDIコンテナにインスタンスの生成と注入を任せることで疎結合・高凝集を実現するテクニックである。 ネイティブアプリ(iOSは知らない)だと一般的に使われている技術で
Eclipse Che とは、クラウド型のIDE環境です。 読み方 Eclipse Che えくりぷす ちぇ $ sudo docker run -p 81:8080 -p 8000:8000 -p 49152-49162:49152-49162 -v /var/run/docker.sock:/var/run/docker.sock codenvy/che start INFO: ECLIPSE CHE: Pulling image codenvy/che-server:latest latest: Pulling from codenvy/che-server e110a4a17941: Already exists 87de885dae11: Pulling fs layer dcf05c63220c: Pulling fs layer 87de885dae11: Verifying
本章では、Spring Bootで特定のコントローラーに対して、共通の処理を行う場合の方法について共有します。 インターセプターの役割 WEB開発をしていて、クライアントからのリクエストに対する処理を共通化したい場合があるかと思います。例えば、ログの書き出し、二重POSTの制御、セッション情報の検証など。そのような場面で、リクエストを受け取る個別のハンドラすべてに処理を記述していては開発コストがかかり、後のリファクタリング作業にも影響を及ぼしかねません。そこでSpringで、コントローラーの前後で特定の処理を挟み込む方法について紹介します。 実装 インターセプター まず、インターセプトの処理の記述方法を伝えます。Springでは、コントローラーの実行前、ビューのレンダリング前、ビューのレンダリング後に処理を挟み込めます。 import javax.servlet.http.HttpServ
Interceptorが複数あるとどうなるのか ここからが本題になってきます。 この辺の処理の流れを理解するには、DispatcherServlet.doDispatchメソッドを追いかけるといいです。 まず、HandlerExecutionChain.applyPreHandleメソッドでpreHandleを実行していることがわかります。 boolean applyPreHandle(HttpServletRequest request, HttpServletResponse response) throws Exception { HandlerInterceptor[] interceptors = getInterceptors(); if (!ObjectUtils.isEmpty(interceptors)) { for (int i = 0; i < interceptor
詰まったのでメモ 問題 インストール済みのJava jre 10.0.2 (Windows x64) jdk 10.0.2 (Windows x64) eclipse: Photon Release (4.8.0) 20180619-1200 PleiadesのJRE無し版 buildship: 2.2.1.v20180125-1441 gradle: 4.9 これでEclipseのGradleタスクビューからcompileJavaしようとすると、JREの方を使ってしまいコンパイルができない。 作業ディレクトリー: C:\~~ Gradle ユーザー・ホーム: C:\Users\~\.gradle Gradle ディストリビューション: ターゲット・ビルドからの Gradle ラッパー Gradle バージョン: 4.9 Java ホーム: C:\Program Files\Java\jr
Eclipseでは、ワークスペースごとに設定情報が保存される。 別のワークスペースでも同じ設定を利用したい場合、以下の方法で引継ぎが可能。 【設定のエクスポート】 メニューのファイル>エクスポートを選択し、エクスポートウィザードを表示エクスポートウィザードで一般>設定を選択し、「次へ」ボタンをクリック設定のエクスポートウィザードで「すべてエクスポート」が選択されていることを確認し、「宛先設定ファイル」に設定ファイルの出力先を直接入力するか、「参照」ボタンから指定し、「完了」ボタンをクリック 【設定のインポート】 メニューのファイル>インポートを選択し、インポートウィザードを表示インポートウィザードで一般>設定を選択し、「次へ」ボタンをクリック設定のインポートウィザードで「ソース設定ファイル」にエクスポートした設定ファイルを指定し、「すべてインポート」が選択されていることを確認し、「完了」ボ
はじめに アーキテクチャや設計の書籍や記事、これまでの経験も踏まえ、学んだ事をここにまとめたい。(まだ、勉強中なので微妙なところもあるかもしれません。お気付きの点があればご指摘いただけるとありがたいです。) 参考文献や参考記事は、本当に良書、良記事で非常に参考にさせていただきました。 生意気なタイトルにしてしまいましたが、自分への戒めということもあってこのタイトルにさせていただいたので、ご容赦ください。 ある共通した話題 設計やアーキテクチャについて書かれた書籍や記事を読んでいく中で、言葉は違えどかなりの高確率で共通するテーマが存在した。 そう、それが 「変更に強くなろう」 といった趣旨のテーマだ。 アーキテクチャや設計に関する書籍や記事は様々な方法論で、これを実現しようとしていた。 今回のテーマと記事の構成 今回は、「変更に強くなろう」というテーマの中で重要だと感じた概念や考え方をまとめ
OSX の環境で 複数のJavaのバージョン 例えば Java7, Java8, Java9 をそれぞれインストールし 切り替えて使用できるようにします。 前提 前提は Mac OSX 10.11 で homebrew をインストールされている環境です。 方針 方針としては 私の場合は cask を使って違うバージョンのJava をインストール jEnv を使ってバージョンの切り替え という方針で設定します。 それぞれが依存関係ではないので 手動で Java をインストールして jEnv で管理することももちろん可能です。 caskroom/versions インストール 私の場合 homebrew caskroom/versions を使って複数のJavaをインストールしています。 2018-11-06 追記 2018-11-06 では既に brew cask search が disa
こんにちは、QAエンジニアの井上恵一です。好きな飲み物は一番搾りと韃靼そば茶です。 初回からニッチなネタではありますが、昨年入社した直後に行った、 iPad アプリのテスト仕様書の管理方法を見直したときの話を紹介しようと思います。 見直しのきっかけ トレタは飲食店向けの予約/顧客台帳アプリです。だれでもかんたんに使いこなせるシンプルさを追求してはいますが、製品の進化に伴ってそのテストケース数はすでに数千という単位にまで膨れあがっています。 製品の品質を安定させるためには、テストの内容自体をブラッシュアップすることが重要なのは言うまでもありません。ただ、安定した製品を永続的に提供していくためには、それに加えて、膨大なテストケースを効率よくメンテナンスし続けるためのプロセス作りも欠かせません。 入社のタイミングでトレタのテスト設計を担当することになったので、テストケースの管理方法についてもいち
2024-08-20 GitHub/ローカル・リモートブランチとoriginのはなし 2024-08-03 VMware/ESXi/バックアップ運用 2024-07-30 Struts/アプリケーションのモジュール化 2024-07-26 Struts/Tilesの基礎 2024-07-25 Subversion/削除してしまったファイルを元に戻す 2024-07-09 Struts/プルダウンの作り方 2024-07-02 AWS/TIPS集 2024-05-23 Java/暗号化 2024-05-15 PukiWikiにBasic認証をつける 2024-04-15 Java/Jenkins/プラグイン開発のTIPS集/Jenkins CLI 2024-03-09 OpenOffice.org/Linuxで常駐させる 2024-03-03 Java/Direct Web Remoting
背景 ここ最近、データアクセスはS2JDBC(2WaySQL)で開発をしていたということもあり、Spring Data JPAのようにクラスファイルの中に文字列として"select column1,column2 from table・・・"みたいな書き方に違和感を覚えていました。そんな時にDoma2の存在を知る機会があったので、ちょっとやってみようかなと思い試してみました。 ちなみに、今の現場ではSpring Boot + MyBatisでやっていますが、 パッと見た感じxmlでマッピング書くのがめんどくさそう xmlがjavaクラスへの依存を持ってしまっている(resultMapとか)、etc javaとSQLを分離したい そもそもあまり詳しくない ってのもあり、やっぱ慣れてる2WaySQLだなーって思っています。 ※他のO/Rマッパーをもう少し理解すれば考え方は変わってくるかもしれま
次はFORM認証について確認します。FORM認証ではユーザー名とパスワードを入力してもらう画面をダイアログの替わりに自分で作成したHTMLページを指定することができます。 FORM認証の場合はHTTPプロトコルの認証の仕組みを使わずに認証が通った場合はセッションを使って認証が通っているかどうかを管理します。その為、一度成功した認証の有効期限はセッションの有効期限に従いますので注意が必要です。 web.xmlの設定 FORM認証を行う場合には認証方法の設定で<login-config>要素に含まれる<auth-method>要素に「FORM」を指定します。 <login-config> <auth-method>FORM</auth-method> <realm-name>レルム名</realm-name> <form-login-config> <form-login-page>/logi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く