JAVA関連のことを調べてみた2021年05月24日

JAVA関連のことを調べてみた2021年05月24日

SpringBoot+JUnit+DBUnitで超簡潔なテスト

以前に作成した[SpringBoot + MyBatis + Thymeleaf + MySQL で超簡潔なCRUD処理](https://qiita.com/hhujk5/items/a35fab16614164c99718)でテストコードを書いてみたので自分用のアウトプットとして投稿させていただきます。
誤りがございましたらご指摘いただけますと幸いですm(_ _)m

##環境
macOS Big Sur
Java 11
Spring Boot 2.4.5
SpringToolSuite4
Maven
MySQL
MyBatis

##テスト対象
①GETリクエストで正しくページが表示される(HTTPステータスコード200が返される)こと。
②GETリクエスト時に、Modelのattributeに文字列”hello”が渡されていること。
③GETリクエスト時に、select処理によりModelのattributeにデータベースのUserListが格納されていること。
④ユーザーのIDを引数とした1件のselect処理が成功していること(DBUnit利用)。
⑤データベース全体のse

元記事を表示

JavaのTreeMap

Javaの連想配列の使い方の記事です。データベースのデータの受け取り処理、ファイルを読み込む処理の時に良く使います。今回は標準入力、標準出力でのサンプルプログラムです。

“`Java
package sakamichi;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Sample1 {
public static void main(String[] args) {
Map data = new TreeMap();
Scanner sc = new Scanner(System.in);
System.out.println(“データの個数を入力してください”);
String line = sc.next();
int N = Integer.parseInt(line);
for(int i=0;i

元記事を表示

標準入力のScannerを1度closeしたら、2度と標準入力できない理由を調べた

#概要

Javaで標準入力ストリームのScannerを1度close()すると、再度Scannerクラスのインスタンスを生成しても標準入力ができなくなります。

“`Java:Sample.java
Scanner sc1 = new Scanner(System.in);
sc1.close();
Scanner sc2 = new Scanner(System.in);
String input = sc2.nextLine(); // NoSuchElementException
“`

理由は、「標準入力ストリームはプログラム開始時に開き、sc生成時に開くわけではない。一方で、sc.close()すると標準入力ストリームが閉じてしまうため」です。

「当たり前じゃん」と思ったらそれでOK。
以下、もう少し詳しく説明します。

#私が誤解していた点
私は上述のエラーについて、「Scannerクラスのインスタンスを新しく生成しているんだから、読み込めてもいいのでは?」と思っていました。
これは、Scannerクラスとストリームの関係があいまいだったゆえの誤解です。

実際は

元記事を表示

VSCode の Java 開発環境にフォーマッターを設定する

# はじめに

本記事では [Google Java Style](https://google.github.io/styleguide/javaguide.html) をサンプルに、フォーマッターを Visual Studio Code に設定する方法を紹介していきます。

# 前提

– 拡張機能 [Japanese Language Pack for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja) がインストールされていること。
– 拡張機能 [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) がインストールされていること。

# 設定方法

## 1. フォーマッターファイルを用意

Google Java Style のフォーマッターファイルは、https://ra

元記事を表示

ある日突然名前解決ができなくなった時に見ると、助かるかもしれない

#はじめに
こんにちは、黒糖と申します。

ブログ(https://kokutoh.com/?p=187)
に書いた内容と同じですが、同じ轍を踏まないようにQiitaにも書いて、供養したいと思います。

日々、システムエンジニアとして、とあるECサイトの保守・運用業務を担っております。
※環境としては、一般的な構成(FW、SSLアクセラレータ、LB、Web(AP)サーバ複数台、DBサーバ)で
 アプリケーションのミドルウェアはWebshere Application Server 8系
 Web(API)サーバのOSはRedhat7、Java1.7です。

先日、他社様とのWEB API 部分で、通信に失敗し、
試行錯誤した末に、復帰することができましたので、備忘の意味も込めて、残しておきます。

#原因?
結論から申しましょう。
原因としては、APIを受ける他社様サーバはAWS上に構築されており、IPアドレスが可変であったことです。

#でも、ちょっと待って・・・
ただ、そのAPIにリクエストを送信するWEB サーバから参照しているDNSサーバは、
他社様指定のもので、名前解決の結果

元記事を表示

Jasperで帳票PDF出力備忘メモ

# 1. はじめに
JavaプロジェクトでJasperによる帳票出力方法についてまとめたメモ。

# 2. Jasper Studioインストールと設定
帳票テンプレート(jrxml)を作成するためにjrxml編集ツールをインストールする必要がある。
編集ツールの利用方法は下記の2通り。

* Jasper Studioを利用する([リンク](https://community.jaspersoft.com/wiki/jaspersoft-studionoinsutorutosetutoatupu))
* IDEにJasperプラグインをインストールする

今回はEclipseのJasperプラグインを利用することにする。

Eclipseへのプラグインインストール方法は[Jaspersoftのコミュニテイーページ](https://community.jaspersoft.com/wiki/jaspersoft-studiopuraguinnoinsutoru)に記載されているため、ここでのインストール手順は省略する。

※2021/5時点の最新バージョンは**6.17.0**である

元記事を表示

JavaでFizzBuzzを作ってみた

こんにちは。Javaを学習し始めたので早速FizzBuzzを作ってみました。
ちなみに私はRubyを学習していました。

“`
public class FizzBuzz {
public static void main(String[] args) {
for(int i = 1; i < 50;i++) { if((i % 3 == 0)&&(i % 5 == 0)) { System.out.println("FizzBuzz"); }else if(i % 3 == 0) { System.out.println("Buzz"); }else if(i % 5 == 0) { System.out.println("Fizz"); }else { System.out.println(i); } } } } ``` 結果 ![515d8694a15a377205a3c2455cdc4fd9.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

Spring Cloud Contract メモ – Getting Startedでの気付き

## 1. やったこと

– Spring Cloud Contractのサンプルを実装して動かした
– 下記のガイドを参考に実装した
– https://spring.pleiades.io/guides/gs/contract-rest/
– Artifactをローカルリポジトリに配置して、Consumer側からアクセスできることを確認した
– Githubリポジトリに生成されたStubを配置して、Consumer側からアクセスできることを確認した
– 実装したサンプルは下記リポジトリ
– https://github.com/ShigeoTejima/spring-cloud-contract-demo

## 2. バージョンなど

– Java 11
– AdoptOpenJDK-11.0.11+9
– Spring Boot 2.4.6
– Spring Cloud Contract 2.2.7.RELEASE
– Spring Cloud Contract 3.0.2

## 3. 気づき

### 3.1. Githubリポジトリにssh接続の場合にエラーに

元記事を表示

Javaでグラフを描画する(SpringBoot)

日次で資産運用のグラフを管理していますが、エクセルだとブログに簡単に貼れないので自作しようと思います。WEBサービスでよくある、インターネット上にデータを保管するようなものではなく、入力欄にエクセルからデータを貼り付けて、グラフ画像を作るだけのプログラムを考えています。(データを管理するとコストがかかるので・・・)

### 現時点の資産運用グラフ

上記のグラフと推移が一致するグラフ画像をプログラムで作ります。今日はまず分割線とチャートです。

**実際にプログラムで出力したチャート画像**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1535669/8ad1daa8-fce7-f4b8-f0d0-0e30a2d896eb.png)
**プログラム**
https://github.com/jamcookjapan/grapy/commit/567f8b2f444b1ef4a89e622babf3a4

元記事を表示

Spring 案件ソルーション Validation 手順書フォルダ

#背景 
Springの機能を確認したかった。
特にValidationを一旦なんとかしておきたいなと思っています。
#やって見て・・・
今ままで学んだことも忘れているが・・・そこはToDoリストを自分で作ったり、
今までの記載を確認したり、公式を確認したりしようと思う。
#リソース
Spring Boot 2 入門: 基礎から実演まで 原田 けいと https://www.amazon.co.jp/dp/B0893LQ5KY/ref=cm_sw_r_tw_dp_BV9D710FBKGWDJJJ3NF9

#TakeAway
## ちゃんと想定通りのJavaバージョンになっているか。
Javaの環境設定
コンパイラー
## lombokの設定
1.サイトからlombok.jarをダウンロードする。

2.⁨⁨/Applications/SpringToolSuite4.app/Contents/Eclipse/へlombok.jarを配置する。

3./Applications/SpringToolSuite4.app/Contents/Eclipse/SpringToolSuit

元記事を表示

GraphQL+SpringDataJDBCを試してみた

# GraphQLを試してみました
(注意)本記事は2020年09月時点の情報です。

## 0. 参考
+ 初めてのGraphQL ―Webサービスを作って学ぶ新世代API

– Spring Boot + GraphQLでAPIを作成してみよう!

https://techblog.yahoo.co.jp/advent-calendar-2018/create-springbook-graphql-api/

## 1. GraphQLとは?
+ 数学のグラフ理論に基づく(グラフ理論:一筆書き問題などの学問)
+ Web APIの

元記事を表示

【Java】CollectionUtilsを使ってコレクション内のnullチェックをする方法

#はじめに
今週は外部ライブラリである`Apache Commons Collections`を使ってコレクション内のnull・size0チェックをする方法をアウトプットします。

#これまでの書き方
これまでは`nullPointerException`を回避するために、以下のように書いてきました。

“`java
List list = new ArrayList();
//listはnullが来る可能性があるとします。

if (list == null || list.size() == 0) {
return true;
}
“`

#CollectionUtilsを使った書き方
`CollectionUtils.isEmpty()`メソッドを使用することで、null・size0チェックをひとまとめにすることが出来ます。
ただし、使用するためには`org.apache.commons.collections4.*`をimportする必要があります。
今後、コレクション内のnull・size0チェックはこの方法を使ってみようと思います。

元記事を表示

GoogleMapsPlatformを使用したルート案内

# はじめに
GoogleMapsPlatformを使用してルート案内方法を覚書程度に記載。

説明するアプリの概要はMap上に現在地を表示し、クリックした場所にマーカーを設置。
設置したマーカーをクリックすると目的地として設定され、現在地から目的地までのルートが描写される。

# 目次
1. マップ画面を生成
2. 現在地を取得
3. 目的地を取得
4. ルート取得API(Directions API)へアクセスするURLを用意
5. 現在地から目的地までのルートを取得
6. 取得したデータをもとにルートを描写

事前準備として、GoogleMapsPlatformのAPI使用を使用できるようにする必要がある。
詳細手順は下記参照。
https://developers.google.com/maps/documentation/android-sdk/overview?hl=ja

## 内容
### マップ画面を生成
activity画面にid=mapのフラグメントを用意し、onCreate時にsetContentViewする。

“`activity_map.xml

元記事を表示

EclipseでGitを使う方法

![スクリーンショット 2021-05-23 10.07.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1053584/ecc5d39a-2357-db1b-2633-c8f3e1d1db5a.png)
## まえがき

javaについて勉強しているので、アウトプットとして記述していきます。
今回は、Eclipseでgitを使う方法を記載していきます。

## gitにニューリポジトリを作る

[github](https://github.co.jp/)ログインし、ニューリポジトリを作成してください。
右上の+ボタンをクリックすると作成画面に移動します。

## 作成画面

![スクリーンショット 2021-05-22 17.32.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1053584/6cd993d0-faaf-dce5-2f99-3e56fbb0f986.png)

Repository name

元記事を表示

Java アプリで CPUプロファイリング

## 環境

– Vagrant 2.2.16
– Ubuntu 18.04
– OpenJDK 11
– https://github.com/jvm-profiling-tools/perf-map-agent
– https://github.com/brendangregg/FlameGraph

## Linux 環境準備

Vagrant を使って環境を作る。bento/ubuntu-18.04 を使うことにする。Linux perf tools が必要。

Vagrantfile

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

Vagrant.configure(“2”) do |config|
config.vm.box = “bento/ubuntu-18.04”
config.vm.synced_folder “./data”, “/vagrant_data”,create:true

config.vm.provider “virtualbox” do |vb|
vb.memory = “1

元記事を表示

【Java】AtCoderのABC-202に参加しました(レート:272→277)。

こんばんは。

2021/5/22に、AtCoderのABC-202に参加しました。
レートは以下の通りとなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/9d4a93cd-a5f9-a356-040e-21978053067e.png)

C問題まで突破しました。
ただ、B問題が一度TLE、C問題は試行錯誤してしまったのと操作ミスで3回エラーになってしまい減点もあった模様です。
レートは272→277にアップ。しょぼいですね。最高レート(278)を次回は更新したい。

###A問題

さいころを3つ振る。
出た目の裏側の数を合計する。

おお、これは簡単だと思い、すぐ解けました。

“`Java

import java.util.Scanner;

public class Main{

public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int

元記事を表示

[Java]日付に関する型の変換まとめ

# はじめに
今回はJavaの日付に関する型の変換についてまとめようと思います。

# Date型とCalendar型
Date型は、日時を扱う際に使用する日付型のクラスです。日時に関するざまざまな処理が可能となります。
Calendar型は、Data型同様日時を扱う際に使用する日付型のクラスです。しかし、Date型よりも加算・減算、日時を比較するなどの処理に特化したクラスになります。

# String型とDate型
## String型→Date型
1. はじめにSimpleDateFormatクラスで日付のフォーマットを指定する。
2. parse(String型)メソッドにより変換
3. 例外処理する必要あり(ParseException)

“`Java
public class FormatChange {
public static void main(String[] args) throws ParseException{
// 日付の定義
String strDate = “2021/5/21”;
// SimpleDateFormatで日付フォ

元記事を表示

【Java SE 11 Programmer I】個人的メモ:総まとめ

#はじめに
私事だがJava SE11 Silverの試験をもうすぐ受ける。
個人的につまづきやすい部分や、「どういう挙動だっけ?」と
分からなくなるときがあるため備忘録として残す。
細かい説明は割愛

#第1章:簡単なJavaプログラムの作成
##クラスの実行コマンド(-cp)
カレントディレクトリ以外にあるクラスファイルを実行
`java -cp build ex.Main`

##import
`test.b.Sample.class`のクラスパスを`bin/test/b/Sample.class`としたとき、
`test.b.Sample.class`のimport文は…

* import test.b.Sample;
* import test.b.*;

binはクラスファイルの配置場所であり、
配置場所はコンパイル時や実行時にクラスパスで指定するものであり、
インポート宣言で指定するものではない

#第2章:Javaの基本データ型と文字列操作
##a = a * a;

“`java
public class Sample {
public static void

元記事を表示

RowやCellをイテレータで処理する場合は未定義の行やセルに気を付ける

# 発生した問題

Apache POIを利用するシステム開発プロジェクトでは「指定したシートを読み込み、2次元配列に変換する」というようなAPIを作成することがあります。自分がかかわっているプロジェクトでもそのようなAPIが提供されており、おおよそ以下のように実装されていました (読み込ませるシートはすべて文字列になっている想定)

“`java
try (Workbook book = WorkbookFactory.create(Paths.get(“target-book.xlsx”).toFile())) {
Sheet sheet = book.getSheet(“target-sheet”);

List> lists = new ArrayList<>();
for (Row row : sheet) {
List list = new ArrayList<>();
for (Cell cell : row) {
list.add(cell

元記事を表示

表示形式が設定された状態の値を取得したい

Excelにはセルの表示形式という機能があって、セルに同じデータを入力していても、セルの表示形式を変更することによって、任意の形式で表示することができます。Apache POIを利用してExcelブックを読み込む際、表示形式が設定された状態の値を取得したい場合、以下のように書けばよいです。

“`Java
DataFormatter formatter = new DataFormatter();
String formattedCellValue = formatter.formatCellValue(cell);
doSomeThing(formattedCellValue);
“`

**環境情報 (pom.xml抜粋)**

“`xml


org.apache.poi
poi
5.0.0

元記事を表示

OTHERカテゴリの最新記事