SpringMVCのカスタムデータバインダー

1。概要 この記事では、自動プリミティブをオブジェクト変換に適用することにより、コードをより明確で読みやすくするために、Springのデータバインディングメカニズムを使用する方法を示します。 デフォルトでは、Springは単純型を変換する方法しか知りません。つまり、データをコントローラーのInt、String、またはBooleanタイプのデータに送信すると、適切なJavaタイプに自動的にバインドされます。 しかし、実際のプロジェクトでは、より複雑なタイプのオブジェクトをバインドする必要があるかもしれないので、それだけでは十分ではありません。 2.個々のオブジェクトをリクエストパラメータにバインドする 単純なものから始めて、最初に単純な型をバインドしましょう。Converterインターフェースのカスタム実装を提供する必要があります。ここで、Sは変換元のタイプであり、Tは変換先のタイプです。 @Component public class StringToLocalDateTimeConverter implements Converter { @Override public LocalDateTime convert(String source) { return LocalDateTime.parse( source, DateTimeFormatter.ISO_LOCA続きを読む »

SpringMVCのキャッシュヘッダー

1。概要 このチュートリアルでは、HTTPキャッシングについて学習します。また、クライアントとSpringMVCアプリケーションの間にこのメカニズムを実装するさまざまな方法についても見ていきます。 2.HTTPキャッシングの紹介 ブラウザでWebページを開くと、通常、Webサーバーから多くのリソースがダウンロードされます。 たとえば、この例では、ブラウザは1つの/ loginページに3つのリソースをダウンロードする必要があります。ブラウザがすべてのWebページに対して複数のHTTP要求を行うことは一般的です。現在、このようなページを頻繁にリクエストすると、ネットワークトラフィックが多くなり、これらのページの処理に時間がかかります。 ネットワークの負荷を軽減するために、HTTPプロトコルを使用すると、ブラウザはこれらのリソースの一部をキャッシュできます。有効にすると、ブラウザはリソースのコピーをローカルキャッシュに保存できます。その結果、ブラウザは、ネットワーク経由で要求する代わりに、ローカルストレージからこれらのページを提供できます。 Webサーバーは、応答にCache-Controlヘッダーを追加することにより、特定のリソースをキャッシュするようにブラウザーに指示できます。 リソースはローカルコピーとしてキャッシュされるため、ブラウザから古いコンテンツを提供する続きを読む »

Java15の封印されたクラスとインターフェース

1。概要 Java SE 15のリリースでは、プレビュー機能として封印されたクラス(JEP 360)が導入されています。 この機能は、Javaでよりきめ細かい継承制御を有効にすることを目的としています。シーリングにより、クラスとインターフェースは許可されたサブタイプを定義できます。 つまり、クラスまたはインターフェイスで、実装または拡張できるクラスを定義できるようになりました。これは、ドメインモデリングとライブラリのセキュリティの向上に役立つ機能です。 2.動機 クラス階層を使用すると、継承を介してコードを再利用できます。ただし、クラス階層には他の目的もあります。コードの再利用は素晴らしいですが、常に私たちの主な目標であるとは限りません。 2.1。モデリングの可能性 クラス階層の別の目的は、ドメインに存在するさまざまな可能性をモデル化することです。 例として、オートバイではなく、車とトラックでのみ機能するビジネスドメインを想像してみてください。JavaでVehicle抽象クラスを作成する場合、CarクラスとTruckクラスのみがそれを拡張できるようにする必要があります。このようにして、ドメイン内でVehicle抽象クラスが誤用されないようにします。 この例では、すべての未知のサブクラスに対して防御するよりも、既知のサブクラスを処理するコードの明確さに関心があります。続きを読む »

NetflixMantisの紹介

1。概要 この記事では、Netflixによって開発されたMantisプラットフォームを見ていきます。 ストリーム処理ジョブを作成、実行、調査することにより、Mantisの主要な概念を探ります。 2.カマキリとは何ですか? Mantisは、ストリーム処理アプリケーション(ジョブ)を構築するためのプラットフォームです。これは、ジョブのデプロイメントとライフサイクルを管理する簡単な方法を提供します。さらに、リソースの割り当て、検出、およびこれらのジョブ間の通信を容易にします。 したがって、開発者は、堅牢でスケーラブルなプラットフォームをサポートしながら、実際のビジネスロジックに集中して、大量、低遅延、ノンブロッキングのアプリケーションを実行できます。 Mantisの仕事は、次の3つの部分で構成されています。 ソース外部ソースからデータを取得するための責任、 着信イベントストリームの処理を担当する1つ以上のステージ 処理されたデータを収集するシンク それぞれを調べてみましょう。 3.セットアップと依存関係 mantis-runtimeとjackson-databindの依存関係を追加することから始めましょう。 io.mantisrx mantis-runtime com.fasterxml.jackson.core jackson-databind 今、私続きを読む »

チェッカーフレームワーク–Java用のプラガブル型システム

1。概要 以下からのJava 8以降のリリース、それはいわゆる使ったプログラムのコンパイルすることができますプラグイン可能なタイプのシステムをコンパイラによって適用されるものより厳しいチェックを適用することができます- 。 利用可能ないくつかのプラガブル型システムによって提供される注釈のみを使用する必要があります。 この簡単な記事では、ワシントン大学の厚意により、チェッカーフレームワークについて説明します。 2. Maven Checker Frameworkの使用を開始するには、最初にそれをpom.xmlに追加する必要があります。 org.checkerframework checker-qual 2.3.2 org.checkerframework checker 2.3.2 org.checkerframework jdk8 2.3.2 ライブラリの最新バージョンは、MavenCentralで確認できます。 最初の二つの依存性は、コード含有チェッカーフレームワーク後者はのカスタムバージョンであるJavaの8すべてのタイプが正しくの開発者によって注釈されたクラス、チェッカーフレームワーク。 次に、Checker Frameworkをプラグイン可能な型システムとして使用するために、maven-compiler-pluginを適切に調整する必要があります。続きを読む »

HibernateSpatialの概要

1.はじめに この記事では、Hibernate、hibernate-spatialの空間拡張について見ていきます。 バージョン5以降、HibernateSpatialは地理データを操作するための標準インターフェースを提供します。 2. HibernateSpatialの背景 地理データには、ポイント、ライン、ポリゴンなどのエンティティの表現が含まれます。このようなデータ型はJDBC仕様の一部ではないため、JTS(JTS Topology Suite)は空間データ型を表すための標準になりました。 JTSとは別に、Hibernate SpatialはGeolatte-geomもサポートしています。これは、JTSでは利用できないいくつかの機能を備えた最近のライブラリです。 両方のライブラリは、hibernate-spatialプロジェクトにすでに含まれています。あるライブラリを他のライブラリよりも使用することは、データ型をどのjarからインポートするかという問題にすぎません。 Hibernate Spatialは、Oracle、MySQL、PostgreSQLql / PostGISなどのさまざまなデータベースをサポートしていますが、データベース固有の関数のサポートは統一されていません。 最新のHibernateのドキュメントを参照して、hibernateが特定のデータベース続きを読む »

Spring Securityでログインした後、別のページにリダイレクトする

1。概要 Webアプリケーションの一般的な要件は、ログイン後にさまざまなタイプのユーザーをさまざまなページにリダイレクトすることです。この例は、標準ユーザーリダイレクトされるだろう/homepage.htmlにページと管理者ユーザーを/console.html例えばページ。 この記事では、SpringSecurityを使用してこのメ​​カニズムを迅速かつ安全に実装する方法を示します。この記事は、プロジェクトに必要なコアMVCのもののセットアップを扱うSpringMVCチュートリアルの上に構築されています。 2.Springセキュリティ構成 Spring Securityは、認証が成功した後に何をするかを直接決定するコンポーネントで続きを読む »

Apache CommonsDbUtilsのガイド

1。概要 Apache Commons DbUtilsは、JDBCの操作を非常に簡単にする小さなライブラリです。 この記事では、その特徴と機能を紹介する例を実装します。 2.セットアップ 2.1。Mavenの依存関係 まず、commons-dbutilsとh2の依存関係をpom.xmlに追加する必要があります。 commons-dbutils commons-dbutils 1.6 com.h2database h2 1.4.196 Commonsの最新バージョンであるdbutilsとh2は、MavenCentralにあります。 2.2。テストデータベース 依存関係が整ったら、使用するテーブルとレコードを作成するスクリプトを作成しましょう。 CREATE TABLE employee( id int NOT NULL PR続きを読む »

WildFlyのヒープメモリを増やす

1。概要 このクイックチュートリアルでは、WildFlyのヒープメモリサイズを増やす方法を見ていきます。 当然、サーバー上で実行されている多数のアプリケーションを処理するには、メモリサイズを増やすと便利です。 2.スタートアップファイルの使用 スタンドアロンモードでは、スタートアップファイルの構成を更新して、ヒープメモリを増やすことができます。 WildFlyインストールのホーム・ディレクトリでは、我々は見つけることができますstandalone.conf(UNIXベースのシステムの場合)またはstandalone.conf.bat中(Windowsシステムの場合)、ファイルのbinフォルダを。 それを開いて、次の行の-Xmxオプションを更新するだけです(要件に応じて番号を変更します)。 JAVA_OPTS="-Xms64m -Xmx512m ..." これにより、サーバーの起動時にヒープメモリが設定されます。 3.環境変数の使用 スタートアップファイルの値を上書きするJAVA_OPTS環境変数を設定することにより、デフォルトのヒープメモリサイズを設定することもできます。コマンドプロンプト/端末から環境変数を設定できます。 Windowsの場合: set JAVA_OPTS=-Xms256m -Xmx1024m ... Unix / Linuxの場合: ex続きを読む »

Javaでのバージョン比較

1。概要 DevOpsテクノロジーの進歩に伴い、アプリケーションを1日に複数回ビルドしてデプロイするのが一般的です。 したがって、すべてのビルドには一意のバージョン番号が割り当てられているため、ビルドを区別できます。プログラムでバージョン文字列を比較する必要が生じる場合があります。 この記事では、さまざまなライブラリを介してJavaのバージョン文字列を比較するいくつかの方法について説明します。最後に、一般的なバージョンと文字列の比較を処理するカスタムプログラムを作成します。 2.Mavenアーティファクトの使用 まず、Mavenがバージョン比較を処理する方法を調べてみましょう。 2.1。Mavenの依存関係 まず、最新のmaven-artifactMaven依存関係をpom.xmlに追加します。 org.apache.maven maven-artifact 3.6.3 2.2。ComparableVersion ComparableVersionクラスを調べてみましょう。無制限の数のバージョンコンポーネントを使用したバージョン比較の一般的な実装を提供します。 これにはcompareToメソッドが含まれており、一方のバージョンが他方よりも大きいか小さい場合、比較の結果はそれぞれ0より大きくまたは小さくなります。 ComparableVersion versio続きを読む »