JAVA関連のことを調べてみた2022年03月02日

JAVA関連のことを調べてみた2022年03月02日

Azure Spring Cloud Enterprise の Service Registry の利用方法について

この記事では、Azure Spring Cloud Enterprise で VMware Tanzu® Service Registry を使用する方法について説明します。

Tanzu Service Registry は、商用 VMware Tanzu コンポーネントの 1 つです。 これにより、マイクロサービス・アーキテクチャの主要な考え方の 1 つである Service Discovery パターンを適用したアプリケーションの開発がとても簡単になります。 各サービスのクライアントを、手動で構成したり、特定の形式のアクセス規則を適用することは困難で、特に本番環境においては不安になります。 その代わりに Tanzu Service Registry を使用すると、登録済みのサービスをアプリケーションで動的に検出し、呼び出すことができます。

通常、Spring Boot のアプリケーションで、Service Registry や Discovery の機能を利用するためには、通常、[Service Registration and Discovery](https://sprin

元記事を表示

【まるで関数型】JavaのFunctionクラス入門

# Functionクラスとは?
Functionクラスはメソッドをインスタンスとして扱えるもので、引数などにも代入する事が可能です。

### この記事について
1. 細かいJavaの文法等は扱いません。
2. 対象者:Java初学者
3. ちょいむずかもしれない。
## 使用例
使用例の一つとしてFunctionクラスを引数で取るメソッドを考えてみましょう。

例えば以下のようなメソッドがあったとして、
“`java:Main.java
private static class Explanation {
/**
* 文字列を成形するメソッド
*/
public static String formatter(String arg) {
return arg + “!”;
}
}
“`
こんなメソッドを引数に取るメソッドを書きた〜い!と思った時、
皆様はどのようにしてコードを書きますでしょうか。
(こんなメソッドを引数に取るメソッド例↓)
“`java:Main.jav

元記事を表示

Javaを使用してWord文書を暗号化および復号化する方法

一部の重要なドキュメントでは、ドキュメントの内容が漏洩しないようにするために、ファイルを暗号化する必要があります。ファイルを表示するときは、正しいパスワードを入力してファイルを開く必要があります。以下では、Wordファイルにパスワード保護を追加する比較的簡単な方法と、暗号化されたWordファイルのパスワード保護をキャンセルする方法を紹介します。

**使用したツール:Free Spire.Doc for Java**

JARファイルのインポート:

公式ウェブサイトから[ダウンロード](https://www.e-iceblue.com/Download/doc-for-java-free.html)します。ダウンロード後、ファイルを解凍し、libフォルダー内のSpire.Doc.jarファイルをJavaプログラムにインポートします。次のインポート効果を参照してください。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/1e9898db-ab7c-dc6e-e9b0-39b03e

元記事を表示

標準入力で受け取った文字列を数値配列化【Stream.of().mapToInt】

# Paizaのスキル問題に挑むためのコピペ

[参考記事](https://qiita.com/takahirocook/items/51265073d04958250b12)
私の初心者レベルでは一発理解が出来なかったので、私なりの解説をメモ代わりに記載しておく。

## Paizaのスキルチェックはすべて標準入力

なのでまずは受け取って、配列に入れて、配列を数値化して、そうして初めて変数XだYだのに入れ込める。

## @takahirocook 氏のコード

~~~java
import java.util.Scanner;
//Stream APIのインポート
import java.util.stream.Stream;

public class Main {
public static void main(String[] args) {
// scannerのインスタンス化
Scanner sc = new Scanner(System.in);

// 空白区切りに文字型で要素ごとに配列に分割

元記事を表示

SpringでQuartzをDBと一緒に使ってみる。

# はじめに
Springで定期実行をする場合は@Scheduledがお手軽に使えていいのですが、
後から時間の変更をする等の複雑な処理には対応していないようです。
そこでQuartzを導入しようとしたのですが情報が少なかったので備忘録として残します。

# 依存関係
* Lombok
* Spring Web
* Spring Data JPA
* H2 Database
* Quartz Scheduler

# 設定
インメモリではなくデータベースを使用する。
“`application.properties
spring.quartz.job-store-type=jdbc
“`
 
Quartz用の設定はquartz.propertiesを作成する。
もしくはapplication.propertiesに下記をつけ足して書く。
“`
spring.quartz.properties.org.quartz…..
“`
 
各コネクションプール用の設定

https://github.com/quartz-scheduler/quartz/wiki/How-to-Us

元記事を表示

Period について

ハマったのでメモ。

# 結論

閏日(2/29)から 2/28 までの Period が返す年数は、Joda Time と Java Time で結果が異なる。

# 環境

| ソフトウェア | バージョン |
|:-:|:-:|
| Joda Time | 2.10.8 |
| Java | 17.0.2 |

# 動作確認

1992-02-29 ~ 2022-02-28 までの年数を Period で取得してみる。

## Joda Time

“`scala
Welcome to the Ammonite Repl 2.5.2 (Scala 2.13.8 Java 17.0.2)
@ import $ivy.`joda-time:joda-time:2.10.8`
import $ivy.$

@ import org.joda.time._
import org.joda.time._

@ new Period(new LocalDate(1992,2,29), new LocalDate(2022,2,28)

元記事を表示

リフレクションでKotlinの要素を取得する【Kotlinリフレクション編】

Kotlinリフレクションを使用したKotlin要素の取得方法についてまとめました。
リフレクションは、privateなクラスやメソッドにアクセスするために便利な機能です。
前回の[Javaリフレクション編](https://qiita.com/satona-oinuma/items/5000f166185f8d7f1b89)に引き続き、今回もAndroidの単体テスト例を用いてまとめています。

尚、ご意見や筆者の認識の誤り等がありましたら、お気軽にコメントをお願いいたします。

## まとめ
### JavaリフレクションとKotlinリフレクション
今回、Kotlinリフレクションでは以下の要素が取得できると分かりました。

– public クラス
– public / private プロパティ
– public / private メソッド
– public / private コンストラクタ

そして、privateクラスのみ取得ができませんでした。
そのため、基本的にはKotlinリフレクションを使用し、privateクラスを取得する時のみJavaリフレクションを使用

元記事を表示

Spring Bootで使われるアノテーションをまとめてみた

業務上、Spring Bootを使っており、その中で結構な数のアノテーション(@でクラスとかにかかれているやつ)が出てくるので備忘録も兼ねてまとめてみました。

#「Spring Boot」とは
Spring Framework(Javaのフレームワーク)のひとつでアプリケーションを作るための仕組み。
Spring Boot以外にも下記リンクあるような様々なプロダクトが用意されている。
[Spring | Projects](https://spring.io/projects)

Spring Bootの特徴として、
 `・あらかじめオススメのプロジェクト(プロダクト)の組み合わせが含まれている`
 `・自動で設定が含まれている`
 `・組み込みサーバが同梱されている`
といったことが挙げられる。

#アノテーション一覧
個人的に重要そうだなと思ったアノテーションは太字にしています。

| アノテーション | 説明 |
|:-|:-|
|**`@SpringBootApprication`**|Springアプリケーションにつけることで、諸々の設定が不要になる。後述する`@Enabl

元記事を表示

Java Log4JShellの脆弱性についての調査内容まとめ(翻訳版) by Nairuz Abulhul

## 訳者前書き
先日発表されたLog4jの脆弱性について調査した中で、Nairuz Abulhul氏の”[Java Log4JShell Vulnerability – What I Learned About it This Week](https://www.freecodecamp.org/news/java-log4jshell-vulnerability/)”という記事を和訳いたしましたので公開いたします。訳者注といった形で、追加で調べた項目について説明を付け加えています。
こちらの記事は公開が2021年12月23日ということで、情報がやや古い可能性もありますので、ご留意いただければと思います。
Log4jに関する公式情報は[こちら](https://logging.apache.org/log4j/2.x/)。


# Java Log4JShellの脆弱性についての調査内容まとめ

先日、世界中の多くのJavaアプリケーションで使われているLog4Jというロギングライブラリの脆弱性が発表されました。本件は「CVE-2021–44228」というインシデント番号で管理

元記事を表示

初めてのテスト駆動開発!ブラウザだけで実践入門!

# はじめに
※本記事は t-wadaさん もしくは TDD Boot Campさん に怒られたら消します。(雀の涙程度のオリジナリティ[^オリジナリティ]はあるものの、コンテンツ自体はt-wadaさんの発表に全乗っかりしてるので・・・)

[^オリジナリティ]: 一応記事のオリジナリティとして、ブラウザだけで実践した個人的理解を足したりはしてるものの、本編の進め方はもうほんとにそのままなので・・・オマージュとかなんかそういう言葉で逃げられるレベルではない。。。

正直、こんな記事を読むよりも、t-wadaさんが翻訳した書籍買って、t-wadaさんが発表してる動画を見た方がよっぽど良いと思います。

https://www.youtube.com/watch?v=Q-FJ3XmFlT8&t=1145s

特に書籍では、TDDを超えてBDDなどの話も綺麗にまとまっている付録が読めるので、強くお勧めします。みんなも買おう!
本記事では書籍の内容には触れませんが、この記事よりもかなり実践的な事例が載っているので、

元記事を表示

vagrant で postgresql+jdk の環境を準備する

## Vagrantfile

“`
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(“2”) do |config|
config.vm.box = “centos/stream8”
config.vm.network “private_network”, ip: “192.168.56.10”
config.vm.synced_folder “.”, “/vagrant”, type:”virtualbox”
config.vm.provider “virtualbox” do |vb|
# vb.gui = true
vb.memory = “1024”
end
#if Vagrant.has_plugin?(“vagrant-vbguest”)
# config.vbguest.auto_update = false
#end
config.omnibus.chef_version = :latest
config.vm.provisi

元記事を表示

「マイクロサービスパターン」の復習 5章

## 概要

– Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 5章 マイクロサービスアーキテクチャにおけるビジネスロジックの設計

ビジネスロジックを設計上、どのように構築していくか

## Transaction scriptパターン

– もっともシンプルな形態
– ビジネスロジックはサービスクラスに持たせて、エンティティクラスはデータだけ
– エンンティティの方はORマッパーでマッピングする
– 利点
– 設計が簡単
– エンティティ側がデータだけなので、責務について悩むこともない
– ロジックとデータが分離されている
– ビジネスロジックとデータ(データベースのスキーマ)の変更頻度・ライフサイクルは違うので別れている方が良いという考え方もある
– 欠点
– ビジネスロジックの重複
– ビジネスロジック間の共通ロジックについて、共通化がきれいにできない
– ロジックは全

元記事を表示

OCJPをSE7からSE11にアップグレードしたときの勉強記録

## この記事について
2016.10に取得した「Oracle Certified Java Programmer, Gold SE 7」をそろそろアップデートしようかなと思い、2022.02に「Upgrade OCJP Java 6, 7 & 8 to Java SE 11 Developer」を受験した時の勉強内容を記録。

## この資格について

Oracleの認定資格のうち、Javaに関する資格「Oracle Certified Java Programmer」は

– Gold(Professional)
– Silver(Associate)
– Bronze

の3段階に分かれている。
海外ではBronzeは存在せず「Silver」「Gold」はそれぞれ「Associate」「Professional」と呼ばれている、そのためBronzeは国際資格ではない。
![javase11_ja.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/140013/6ef3f7c8-8a78-7e6c

元記事を表示

Javaの同値性と同一性についてまとめてみた

Javaで同一性と同値性について調べてみたのでまとめてみました。

# 同値性と同一性の違い

配列、もしくは変数に同じ値かどうかを調べるのか、同じインスタンスで生成されたかどうかを調べるのか
が違います。

配列、もしくは変数に同じ値が入るかどうかを調べるのが同値性

同じインスタンスで生成されたかどうかを判定するのが同一性です。

ここでポイントになるのは、同値性は同じインスタンスで生成されているかいないかは関係ありません。インスタンスを仮にまたいだとしても、同じ値が格納されているのかどうかで判定します。

# 同値性と同一性はどうやって判定するのか

同値性は`equals`

同一性は`==`で判定します。

# サンプルコード

試しに同値性と同一性を判定してみましょう。

“`Main.java
class Main {
public static void main(String args[]){
Integer a = 127;
Integer b = 127;
//変数aと変数bの同一性の判定をする

元記事を表示

ひと言学習メモ1:printとprintlnの活用(P.S.return文についても)

ひと言:
print()は改行なし、println()は改行付き。
returnは結果を戻す、上記2種は出力するのみ。

自己流解釈:
〇print:
コンソールに一行で連続出力したい時に使う。

〇println;
改行したい時に使う。

〇return:
return(a)はSystem.out.println(a)は、コンソールでの出力結果が同じように見える時もあるが、本質的に違う。
voidメソッドで簡単判断するのもあり。

ここ最近経験した標準入出力問題について、自分のコードをメモします。

Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int i = 0; i < N; i++) { String token1 = sc.next(); System.out.print(token1+" "); int token2 = sc.nextInt(); S

元記事を表示

【 Javaの条件式について 】

現在Javaを独学で学習中のため、自分への刷り込みを目的としての投稿になります。

## 条件式では「 = 」ではなく「 == 」
初心者が陥りやすいところで、条件式を書くときは「 == 」を使用する。
例:
“`java
○ initial == “田中”
✖️ initial = “田中”
“`

## 文字列を比較する時の書き方
Javaでは、条件式のなかでString型の変数や文字列を比較する場合特別な書き方をする。
“`java
○ if (str.equals(“夕日”)){….}
✖️ if ( str == “夕日”){….}
“`

⚠︎仮に == を使用してもコンパイルエラーにはならず、時々変な動きをするというタチの悪い動きをする。

## Javaの賢い話(短絡評価)
“`java
if (age >= 18 && age == 5){…}
“`
という条件式があり、ageの内容が1の場合、
上の条件式の左辺のみ評価した時点でfalseが確定するので、右辺は無視する。
このようなJavaのふるまいを`短絡評価`という。

以上本日の刷

元記事を表示

MyBatis Generatorの導入手順

# はじめに
Spring Bootの勉強過程でMyBatisを用いてデータベース接続を行おうとしているのだが、
テーブル定義に則ったentityクラスを作る際、1つ1つ手作業で全カラムのフィールドを作成するのは骨が折れる。

以下のようなテーブルが複数あった場合、テーブルごとにentityクラスを作成する必要があるが…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503230/e0a71a20-c689-7f07-d2d9-bbc985f8fd43.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503230/ccc0718e-136e-c716-8bf4-eb91c5572413.png)

1つ1つカラム名見て、データ型見て…と、勉強用の開発ならチマチマ手作業で行ってもいいのだが、業務で開発を行う際はテーブル・カラムの量が個人でやる比じゃないため、さすがに面倒く

元記事を表示

Amazon API Gateway + Lambda統合をJavaで実装するメモ

## 対象読者
– 自分
– JavaでLambdaを実装する人
## API Gateway
REST APIで定義する。
メソッドの作成時、統合タイプが選択できる。この時Lambda関数が選択できるが、
– 「Lambda プロキシ統合の使用」にチェックを入れるとLambdaプロキシ統合のリクエスト・レスポンス形式に沿ってLambda(Java)の実装が必要
– Lambda プロキシ統合
– チェックを入れないとAPI Gateway側の「統合リクエスト – マッピングテンプレート」での定義が必要となる。
– API Gateway 内でリクエスト変換をするということ
– Lambda 非プロキシ統合

マッピングテンプレートの例:
“`text:マッピングテンプレート
#set($inputRoot = $input.path(‘$’))
{
“title” : $input.json(‘$.title’),
“body” : $input.json(‘$.body’),
“coverImageUrl” : $input.json

元記事を表示

Java Silver SE11 11章

# Java Silver SE11 11章
[黒本](https://www.amazon.co.jp/gp/product/4295007625/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)をもとに学んだことをアウトプットしていきます。
主に問題を解いていて、間違えた箇所もしくは知らなかった内容になります。

## モジュール
複数のパッケージをまとめて管理する単位のこと。
モジュール内のパッケージは、明示しなければ非公開パッケージとなり、パッケージに含まれるクラスがpublicであったとしても、外部のモジュールからアクセスできなくなる。

### プラットフォームモジュール
標準クラスライブラリなど、あらかじめ用意されているライブラリを提供しているモジュールのこと。
例として、java.langやjava.util, java.ioパッケージなどをまとめているのが、“`java.baseモジュール“`である。このモジュールは自動的に読み込まれる。

### module-info.java
対象のモジュールの設定内容を

元記事を表示

ラムダ式でtry-with-resources文にクローズ処理以外の後片付けをさせる方法

# 概要
try-with-resources文の自動クローズを利用するにはリソースにAutoCloseableインターフェースが実装されている必要があるが、このインターフェースを持たないクラスに対してもラムダ式を使って自動クローズするさせる方法についてメモ

# try-with-resources文で自動クローズされる仕組み
ドキュメントを確認してみたところ、try-with-resources文の中でオープンされたリソースのAutoCloseabelインターフェースがtry文を抜ける際に呼び出されてクローズ処理が行われるからという理解でよさそう

https://docs.oracle.com/javase/jp/7/technotes/guides/language/try-with-resources.html

# `HttpURLConnection`と自動クローズ
AutoCloseableインターフェースを持っているリソースの自動クローズをしてくれるtry-with-resources文だが、例えばHttpURLConnectionのようなclose処理があるがこの

元記事を表示

OTHERカテゴリの最新記事