Java

「Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object.」への対応

  • POST
「Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object.」への対応 はじめに Lombokの@Dataのアノテーションを親クラス・子クラスの両方に付けている際に、にビルド時に以下の警告メッセージが表示されます。 Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. ↓和訳 equals/hashCode の実装を生成しているが、superclass を呼び出していない このクラスは java.lang.Object を継承していないにもかかわらずです もしこれが意図的なものであれば、型に '@EqualsAndHashCode(callSuper=false)' を追加してください https://stackoverflow.com/questions/56583423/generating-equals-hashcode-implementation-but-without-a-call-to-superclass-even 本記事では、上記エラーの対応について紹介します。 警告の内容 @Dataを定義した抽象クラスを継承した子クラスは、java.lang.Objectを直接継承していないことになります。 そのため、equlesメソッドやtoStringメソッドはjava.lang.Objectのものを利用することができず、 デフォルトでは開発者が自分で実装する必要がある、ということ示した警告です。 警告を回避する方法 回避するためには継承したクラスで以下のannotationを追加することで自前での実装を避けることができます。 @EqualsAndHashCode(callSuper=true) @ToString(callSuper=true) 上記を設定することで、スーパークラスであるjava.lang.Objectを利用することができます。 おわりに Lombokの@Dataのアノテーションを親クラス・子クラスの両方に付けている際の警告への対応を紹介しました。 本記事がJavaエンジニアの参考になれば幸いです。

Azure Active Directoryで認証するJavaアプリケーションが作れるライブラリ「Spring Cloud Azure」を紹介

  • POST
Azure Active Directoryで認証するJavaアプリケーションが作れるライブラリ「Spring Cloud Azure」を紹介 はじめに Azureでは「Azure Active Directory (Azure AD) 」とJavaライブラリ「Spring Cloud Azure」を使うことで、Azure ADに登録されているユーザで認証を行うWEBアプリケーションの作成を行うことができます。 この記事では「Spring Cloud Azure」について紹介します。 Spring Cloud Azure Springは、VMwareが開発したJava言語のWEBアプリケーション開発に必要な機能を提供するフレームワークです。 Spring Cloud Azureは、AzureのサービスとSpringのシームレスな統合を提供するオープンソースプロジェクトです。 https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#spring-security-support https://docs.microsoft.com/ja-jp/azure/active-directory/develop/quickstart-register-app Spring Cloud AzureでのAD認証 Spring FramworkにはSpring Securityというログイン認証やCSRF対策をフレームワークが含まれています。 Spring Cloud AzureではAzure用に拡張されたSpring SecutiryでOAuth2.0での認証を行います。 以下にAD認証のシーケンスを記載しています。 https://microsoft.github.io/spring-cloud-azure/current/reference/html/index.html#spring-security-support https://spring.pleiades.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/builders/HttpSecurity.html Azure ADへのアプリケーション登録 WEBアプリケーションでAzure ADでの認証を行うには、AzureポータルでAzure ADに対象のアプリケーションの登録と、クライアントシークレットの作成を行います。 アプリケーション登録 Azure ADメニューからAzure ADを選択します。 表示名 : 任意のアプリケーション名を入力 サポートされているアカウントの種類 : 今回は任意の組織ディレクトリ内のアカウントを選択します リダイレクトURI : 省略可能。省略した場合は https://WEBアプリホスト名/login/oauth2/code/azure になります クライアントシークレット登録 Azure ADに登録したアプリの「証明書とシークレット」からクライアントシークレットを追加します。 説明 : 任意 有効期間 : 今回は2年を設定します 作成されたクライアントシークレットの値を控えます。(※再表示はできません) その後、クライアントID(アプリケーションID)および、テナントIDを確認し、控えます。

Log4Jで特定のライブラリのログ出力を無効化する

  • POST
Log4Jで特定のライブラリのログ出力を無効化する はじめに Javaのログ出力ライブラリ「Apache Log4j」にて、特定のライブラリのログメッセージの出力を無効化する方法を紹介します。 特定のライブラリのログメッセージを無効化 以下にあるように、<Logger name="xxx.xxx" level="OFF"/> を設定することで、指定したライブラリのログメッセージのみを無効にすることができます。 <?xml version="1.0" encoding="UTF-8"?> <Configuration packages="jp.co.logger" status="off"> <Properties> <Property name="encoding">UTF-8</Property> </Properties> <Appenders> <Console name="test"> <PatternLayout pattern="${output-format}" charset="${encoding}" /> </Console> </Appenders> <Loggers> <!-- 特定のライブラリのログ出力を無効(xxx.xxxに対象のライブラリを指定) --> <Logger name="xxx.xxx" level="OFF"/> </Loggers> </Configuration> https://stackoverflow.com/questions/23996762/disable-log-output-from-libraries おわりに 本記事では、Javaのログ出力ライブラリ「Apache Log4j」にて、特定のライブラリのログメッセージの出力を無効化する方法を紹介しました。 a8adscript('body').showAd({"req": {"mat":"3HREPM+6UHH82+279M+HUSFL","alt":"商品リンク","id":"3IzcOOW-g7-u2A2FzR"},"goods": {"ejp":"h"+"ttps://ebookjapan.yahoo.co.jp/books/721208/","imu":"h"+"ttps://cache2-ebookjapan.akamaized.net/contents/thumb/m/F0100169654961.jpg?1663322311000"}});

Azure DevOpsのパイプラインからAppServiceのデプロイ

  • POST
Azure DevOpsのパイプラインからAppServiceへのデプロイ はじめに 本記事では、マイクロソフトから提供されているサンプルWebアプリケーションを使って,Azure DevOpsでのリポジトリの作成~パイプラインの作成からAppServiceの デプロイを行うまでの一連の操作を記載する。 AppServiceにWebアプリケーションを作成 以下の手順で、Webアプリケーションを作成。 DebOpsで組織を作成 DevOps用のプロジェクトの作成 リポジトリの作成 サービスコネクションを作成 サンプルプログラムを取得。 以下のサイトから、サンプルプログラムを取得してZIPダウンロードする。 先程クローンしたローカルリポジトリに展開する。 https://github.com/MicrosoftDocs/pipelines-java コミットを行い、その後リモートリポジトリにPushする。 $ git add . $ git commit -m "Sample WebAppを追加" $ git push パイプラインYAML作成 以下のパイプラインを作成する。 trigger: - master variables: # Azure Resource Manager connection created during pipeline creation azureSubscription: '作成したサービスコネクション名を指定' # Web app Type webAppType : 'webAppLinux' # Web app name webAppName: 'sample-web-application' # Environment name environmentName: 'sample-enviroment' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: 'Build stage' jobs: - job: Debug displayName: 'Show debug message' steps: - script: | echo "Subscription : $(azureSubscription)" echo "Web App Name : $(webAppName)" echo "Environment Name : $(environmentName)" echo "Vm Image Name : $(vmImageName)" echo "Pipeline Workspace Name : $(Pipeline.

今更Java入門

  • POST
今更Java入門 Javaとは 名前の由来 開発元のサン・マイクロシステムズ社の近くのコーヒーショップのウェートレスがつけていたシャツのロゴ「It’s a jungle out there, So drink your java!」からとったと言われている。 もともとOakという名前だったが、Oakという名称は当時すでに商標登録されていたため,正式リリースのために別名を付けた。 コンパイルの方法 javac ファイル名で実施。 $ javac sample.java 定数の定義方法 final int 変数名 用語 ネスト カッコの入れ子のこと リテラル 文字や数字の表記のための値 イミュータブル 作成後に値の変更ができないこと ラッパー あるクラスやデータ型などが提供する機能やデータを含みつつ、 別の形で提供するもののことをラッパーという。 元の機能を包み、覆い隠す役割を果たすためにこのように呼ばれる。 JAR(Java Archive) コンパイルされた複数のJavaバイトコードや、画像などのリソースを一つにまとめてZIP圧縮したファイルのこと。 クラスファイルをすべて1つのファイルにまとめる マニフェストファイル バージョンや、jarファイルの作成に使用したツールなどのJARファイルの内容が記述されている Manifest-Version: 1.0 Ant-Version: Apache Ant 1.6.5 Created-By: 1.4.2_09-b05 (Sun Microsystems Inc.) Main-Class: Sample データの型 プリミティブ型 格納サイズが決まっているもの(int, short, long, fload, double, char, boolean)