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

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

Excelから単体テストデータを投入する(SpringBoot + SQLServer + DBUnit)

## 初めに

単体テスト時のテストデータの生成・管理って、結構めんどくさいですよね。
そこで今回は、「テストデータをExcelで予め用意しておいて、テストメソッド実行時にDB登録する」ことでテストの効率化を図る仕組みを作ってみます。

既存の記事(例えば[こんなの](https://tanaka653.hatenadiary.jp/entry/2021/03/14/111033))だと、テストメソッド内で明示的にテストデータ生成を行うものが多かったのですが、これだとテストメソッドが肥大化してしまいます。

個人的にはテストメソッドの肥大化は好きじゃないので、本記事ではこれを防ぐためにspring-test-dbunitライブラリの**LookUpクラス**を使用することとします。

## 前提

### 使用技術

|技術|バージョン|用途|
|–|–|–|
|Java|amazon-correto 16|プログラミング言語| 
|SpringBoot|2.6.1|Webフレームワーク| 
|SQL Server|2017-latest|データベース(dockerで用意)|
|

元記事を表示

【OOP】03_カプセル化

こんにちは、コイキングです。

本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、カプセル化について、説明したいと思います。

******
# 1. カプセル化とは?
カプセル化とは関りがあるデータと行為をまとめて、’クラス’という’カプセル’に盛り付け事を意味します。
実はクラス作る際に知らず知らずのうちにカプセル化をしていたとも言えます。

# 2. カプセル化の理由
## 1) コードの活用・管理
例えると犬クラスに翼という属性を定義すると、犬クラスに翼属性があるとは思えないでしょう?
つまり、関りがない属性とメソッドはちゃんと活用されたり、管理されることが難しいでうs。
関りがある物だけクラスというカプセルに集めておくとソースコードを再活用・管理する事がより良くなります。

## 2) 情報隠蔽
クラス内に集めておいたメンバー変数とメソッドをどこにでも呼び出せると**クラスの元の設計された意図通り動作しない可能性が高くなります。この様なことを予防するための特性が情報隠蔽**です。
どこにでもメンバー

元記事を表示

GraalVM(native-maven-plugin)で「JEP 290: Java Serialization Filtering」の仕組みを利用する

GraalVMのnative-imageコンパイラで生成したnative-imageの中で[Serialization Filtring](https://docs.oracle.com/en/java/javase/11/core/serialization-filtering1.html#GUID-0A1D23AB-2F18-4979-9288-9CFEC04F207E)を利用する方法がわかったのでメモっておきます。

# ビルドツール

* Maven([native-maven-plugin](https://docs.oracle.com/cd/F44923_01/enterprise/21/docs/reference-manual/native-image/NativeImageMavenPlugin/))

# 指定方法

`buildArgs`にフィルタリングルールを指定すればOK!

“`xml org.graalvm.buildtools
native-maven-plugi

元記事を表示

Java標準機能でHttpClient

普段はSpringBootを使った開発をしているため[RestTemplate](https://spring.pleiades.io/guides/gs/consuming-rest/)を使うのだが、いざSpringBootに依存しない実装が必要となったときに、[Apache HttpClient](https://hc.apache.org/httpcomponents-client-4.5.x/) を使わなくてもJavaの標準機能だけで簡単に実装できるようになったことを恥ずかしながら最近知ったので、昨年Java17がリリースされた今となってはもう古い記事になってしまうが、今更ながらJava標準機能でHttp通信するクライアントプログラムについて簡単にまとめておくことにした。

# 本記事の前提
– Java11以上であること(Java8ではサポートされてない機能)
– サーバ側のコードは割愛
– Jsonとのマッピング機能はJacksonを想定

# 受信するデータ型
“`java
public class ResponseDto {
private String me

元記事を表示

AtCoder Beginner Contest 235をやった(Java)

AtCoder Beginner Contest 235をやった。
記事投稿サボってました。自己満投稿ですが、これからもよろしくお願いします。
C問題はTLEになったので参考にしないでください。
※もし、Javaで解かれた方いましたら、コメントいただきたく!!

##[A](https://atcoder.jp/contests/abc235/tasks/abc235_a)
3つの数字の並び替え問題
詳細は例題にある通り。直感的に3回並び替えて足し算する方法が楽かなと思ったのでそれでやりました。

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
String abc = scan.nextLine();
int sum = 0;

for(int i = 0

元記事を表示

【Spring Boot】GET・POSTの実装

最近、仕事で Spring Boot を使っているので、勉強した内容について書いていきます。

#開発環境
Eclipse(日本語化プロジェクト)の最新のJava版をダウンロードして使用します。
`Spring Boot`を使うとなると、`Eclipse Spring Tool Suite (STS) `が必要になりますが、`Pleiades All in One Eclipse`をダウンロードすれば、既に使えるような状態になっているかと思います。

#プロジェクトの作成
eclipseで workspace を開きます。
新規プロジェクト作成ウィンドウを開き、「Spring Boot スターター・プロジェクト」を作成します。
これにより、デフォルトのSpring boot プロジェクトが作成されたかと思います。
cff108b4-dc20-9697-06f4-c749e9ee936f.pngJava Silver SE11 4章

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

## while文
繰り返し処理に使用される構文。
条件式がtrueの間は処理を繰り返す。
中カッコ{}を省略した場合、次の1行が繰り返し処理の対象になる。

“`java:while
public class Main {

public static void main(String[] args) {

int num = 0;
while (num < 5) { System.out.println("num = " + num); num++; System.out.println("num++ の結果は " + num); } } } ``` ```java:結果 nu

元記事を表示

【OOP】02_メンバー変数・メソッド・コンストラクター

こんにちは、コイキングです。

本記事では OOP(Object Oriented Programming == オブジェクト指向プログラミング)の説明のうち、メンバー変数・メソッド・コンストラクターについて、説明したいと思います。

******

※説明に使うコード

“`java:Dog.java
public class Dog {

// メンバー変数
String name;
int hp;

// 静的(static) メンバー変数
static String breed;
static final String cryingSound = “Wang~!”;

// インスタンスメソッド
public void eat() {
System.out.println(“eat”);
}

// メソッドオーバーロード
public void eat(String food) {
System.out.println(“eat : “+food);
}

public String getName() {
retur

元記事を表示

Webで使えるJavaのUIフレームワークのVaadinをさわってみた

## モチベーション(動機)
この記事の執筆に至る経緯の発端は、Apache Wicket製プロジェクトを新システムに移行するのにどうするかという課題を筆者が持つ所以である。筆者は十数年Javaをメインにしている。最近はニューラルネットや機械学習でpythonをさわることが多くなっている。Webアプリを作るといえばReactやらVueやらでてくるのでReactを勉強しているがTypeScriptの型のサポート具合がどうにもしっくりこないやらバージョンアップのたびにばっさりと下位互換性をきりすてる具合にはついていけるかどうか一抹の不安が拭えないという印象がある。自身のできないことをできるようにすることは大事であるが、自身の強みを生かして伸ばすことも同様に大事だと気づいた。初心に立ち返ってJavaでがんばるには最近はどうしたらいいのだろうということで筆をとった次第である。

## Vaadinとは
JavaでWebのUIを作ることができるフレームワーク。Pure Javaで書けそう。同類としてはApache Wicket。最近はFlowとFusionという仕組みを用意してPure Java

元記事を表示

Javaを通してPDFタイル画像の背景(透かし)を設定する方法

##概要と環境への準備
この記事では、PDFライブラリの無料バージョン(Java用のFree Spire.PDFを使用して画像をロードし、タイル画像の透かしとしても使用できるPDFタイル画像の背景を設定する)の効果を紹介します。コードを編集する前に、 jarファイルをインポートする必要があります。2つのタイプがあります。メソッドはオプションでインポートされます。

1.手動でのダウンロードとインポート:公式Webサイトにアクセスしてjarパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/pdf-for-java-free.html)**し、解凍して、libフォルダー内のSpire.Pdf.jarファイルをJavaプログラムにインポートできます。

2. Mavenリポジトリーのインポート:Mavenプロジェクトを作成することにより、pom.xmlファイルでMavenリポジトリー・パスを構成し、次のようにFree Spire.PDF for JavaのMaven依存関係を指定します。

元記事を表示

Intellijで@slf4jでログ出力しようとするとcannot find symbol logのエラーが出る

## 概要
IntellijでSpring Bootで@slf4jを使って `log.debug(“Sample”)` のようにログを出力しようとすると、 `cannot find symbol log` というエラーが発生し、Compileが失敗する。その対処方法。

## Versions
– Intellij Ultimate 2021.3.1
– Spring Boot 2.5.6

## Enable annotaion processing
Preference > Build, Excecution, Deployment > Compiler > Annotation Processing
「Enable annotaion processing」にチェックを入れる。
![Screen Shot 2022-01-14 at 13.32.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105936/87183f1b-3d8c-1e56-e7e7-f52f9d7697b3.png)

#

元記事を表示

C++,C#のコメントアウトテクニック

# 概要
下記のような記載が出来る言語で使えるコメントアウトのTips

[使える言語の参照](https://qiita.com/power3812/items/d8fc76f551970085e189)

“`main.cpp
// 1行コメント
/*
複数行コメント
複数行コメント
*/
“`

# 内容
複数行コメントを1文字で切り替える
先頭の**スラッシュ(/)**を消すと切り替えれる

“`main.cpp
//*
現在の
複数行コメントは
コメントアウトされない
//*/

/*
現在の
複数行コメントは
コメントアウトされる
//*/
“`

機能の切り替えを1文字で切り替える
上記のIF版で
先頭の**スラッシュ(/)**を消すと切り替えれる

“`main.cpp
//*
Active Block
/*/
Disable Block
//*/

/*
Disable Block
/*/
Active Block
//*/
“`

# まとめ
C++er には多少有名なのでN番煎じではあるもののいろいろな言語で使えるので書いてみました。

C++では#i

元記事を表示

assertEqualsやassert_equalの引数はなぜ expected, actual の順なのか、調べてみた

## はじめに

xUnit系のテスティングフレームワークでは、2つの値が等しいことを検証するメソッド(`assertEquals`や`assert_equal`など)の引数が expected, actual(期待する値、実際の値)の順に並びます。

“`java
// Java (JUnit)
assertEquals(2, calculator.add(1, 1));
“`

“`ruby
# Ruby (minitest または test-unit)
assert_equal(2, calculator.add(1, 1))
“`

しかし、この引数の順番は直感に反するので、逆に書きたい、と思う人も中にはおられるようです(というか、僕も昔そう思っていました)。

“`java
// actual、expectedの順がいい!
assertEquals(calculator.add(1, 1), 2);
“`

“`ruby
# actual、expectedの順がいい!
assert_equal(calculator.add(1, 1), 2)
“`

元記事を表示

Effective Java第3版 項目26 p120に記述されているコードスニペットを完成させてみた。

 [Effective Java](https://www.maruzen-publishing.co.jp/item/?book_no=303408)を読んて勉強してみようと思いましたが私にとっては難しいものでした。そこでじっくりとコードを打ち込んで理解しようと思いましたがコードが断片的であり、すんなり理解できなかったので、コードの省略部分を想像に任せ動くようにして、理解を深めようと思います。
 本の1ページ目から始めればいいのですが、勉強会に途中から参加することになり、項目26から始めます。またこの記事は、記述されていない省略されたコードを補完することが目的で、何か技術的な説明をするのが目的なので、本を持っていないと理解できないことが多くあると思います。

#1.本記事の対象の項目とページ
第5章 ジェネリックス 項目26 原型を使わない p120

#2.コードスニペットを動くように補完したコード
 p120上段部分で記述されている「やってはいけないコード」のスニペットを以下のとおり書き加えて、本書に書かれているエラーを吐き出すことができるようにしました。

 次のコードは、m

元記事を表示

WebViewで基本認証させる際の注意点


## 最初に結論

AndroidアプリのWebViewで基本認証させようと思って検索するとよく見かけるサンプルコードについて、これではコンテンツに埋め込まれている外部サイトのオブジェクト(画像とかロギングツールとか広告オブジェクトとか)へ認証情報を流してしまうかもしれないので、注意が必要。
つまり、**認証情報を提示するホスト/URLを、きちんと制限しましょう。**という至極当然の結論。


## よく見るサンプルコード

“`java
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
handler.proceed(“ユーザ名”, “パスワード”);
}
});
“`

つまり、WebViewClientクラスの「onReceivedHttpAuthRequest」をオーバーライドして

元記事を表示

JavaでとりあえずWeb APIを叩く方法

## JavaでAPIを叩く方法でつまづいたので書き記す
とりあえず公開されているAPIを叩きたい人向け
もっといい方法ありそうですが書いておきます

## importするライブラリ
“`java
import java.net.URL;
import java.io.*;
“`

## コード
“`java
final String endpoint = “任意のURL”;

                // ここではkeyとidのパラメータが必要な場合を書きます。必要ない人は飛ばしてください。
final String key = “パラメータ必要な人は”;
final String Id = “任意で”;

                // パラメータが複数ある人はidのように&で繋げてください。
String url = endpoint + “?key=” + key + “&id=” + Id;
URL obj = new URL(url);
InputStrea

元記事を表示

初めてのjda-utilties (JavaのDiscordBot)

使い方・初めてではまったことを書いていきます。
jda初心者なのでミスがあるかもしれないです。

# appとbotの作成

まずDiscord Developer Portalに行きます。

> https://discordapp.com/developers/applications/

1. NewApplicationを押す
1. 名前の入力
1. create
1. ここで画像とかを設定できます
1. 左のメニューからbotを選択します
1. AddBotを押す

これでbotができました。

### botの招待urlの取得

1. 左のメニューからOAuth2 > URL Generatorを選択します
1. botを選択し、権限も設定します。
1. Copyでurlをコピーできます。

### tokenの取得

1. 左のメニューのbotを選択します。
1. アイコンの右にあるTOKENの下のCopyでコピーできます。

### ownerIdの取得

1. botのオーナーでログインします。
1. 設定を開き詳細設定を開きます。
1. 開発者モードをオンにします。

元記事を表示

JavaのHttpClientで、APIのレスポンスボディを自作クラスのインスタンスにする方法

# 以下のAPIのレスポンスボディを扱いやすくしたい
“`json
{
“id”:”1″,
“name”:”田中”
}
“`

# 方法

### レスポンスボディに対応したプロパティを持つクラスを作成する
“`java
public class ApiResponseBody {
private String id;
private String name;
}
“`

### jacksonを導入する(今回はMaven)
“`xml

com.fasterxml.jackson.core
jackson-core
2.13.1

“`
### レスポンスボディを自作クラスのインスタンスにする
“`java
// APIにリクエスト
var client = HttpClient.newHttpClient();
var request = HttpReq

元記事を表示

Javaで簡単なパスワードジェネレーターを作ってみた

Java初心者なので、とりあえずJavaのアルゴリズムを作成してみました。
今回の要件としては、

“`
・パスワードは数字のみ
・桁数と数はユーザーが指定できる
“`

といったものになります。

# 処理の内容

“`
・ユーザーから入力された値(桁数・パスワードの数)
・指定された桁数×指定されたパスワードの数分の乱数を生成する。
・指定された桁数で区切る
・もしユーザーが全角・半角の数字以外のものを入力してきたら、「入力は数字のみでお願いします」
という言葉を出力し、もう一度入力させる。
繰り返し数字を入力してこなかったら、数字を入力するまでそのアナウンスを繰り返す。
“`

といった処理になります。
それではやっていきましょう!!!!!

まず、パスワードを作るために必要なユーザーからの入力を受け付ける部分を作っています。

# まず、ほしいパスワードの数を求めます

まず3行目から、

“`
System.out.println(“ほしいパスワードの数を入力してください”);
String inputQuantity = passQ

元記事を表示

Javaを使用してWord文書に複数のテキスト透かしを追加する方法

##頭語
Word文書の透かしについて、皆よく知っているはずです。以前は単一行の透かしを紹介したことがありますが、日常でWordを使用していると、常に複数の透かしを追加しなければならないです。故にこの記事で、Javaを使用してWord文書に複数のテキスト透かしを追加する方法を紹介します。

##コードのテスト環境
1. Intellij Idea 2019.1
2. JDK 1.8.0
3. Spire.Doc.jar

##jarパッケージの取得とインポート
JarパッケージをIDEAに手動でインポートします。具体的な手順は次のとおりです。
**ステップ1**:E-iceblueの公式Webサイトに登録してログインし、[Spire.Doc for Java](https://www.e-iceblue.com/Download/doc-for-java.html)ダウンロードページにアクセスして製品パッケージをダウンロードします。
**ステップ2**:製品パッケージを解凍し、libファイルの下でSpire.Doc.jarを見つけます。
**ステップ3**:Spire.Doc.jarを

元記事を表示

OTHERカテゴリの最新記事