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

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

Spring Boot 2.2 から Content-Type: application/json に charset=UTF-8 が付かない

## 概要

– Spring Boot 2.2 から @RestController にて JSON を返す際の HTTP レスポンスヘッダで Content-Type: application/json になる (charset=UTF-8が付かない)
– Spring Boot 2.1 では @RestController にて JSON を返す際の HTTP レスポンスヘッダで Content-Type: application/json;charset=UTF-8 になる

## 検証用ソースコード

### src/main/java/com/example/MyApp.java

“`java
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpHeaders;
impo

元記事を表示

Java 3級対策 問1過去問ポイントまとめ

自己学習用メモ
知識問題まとめ

####Javaとは
– オブジェクト指向型プログラミング言語
– コンパイル型

####扱うことのできる変数は・・・
①「基本データ型」
②「参照型」

####エラーチェックは
– 「コンパイル時」「実行時」双方で行われる

####javaコマンド
– 実行するプログラムには「mainメソッド」が必要
– javaプログラムのコンパイルが可能

####javacコマンド
– コンパイル用

#### 「.java」
– javaソースファイルの拡張子
– コメント記述OK
– 命令文の区切りは「;(セミコロン)」

####「.class」
– クラスファイルの拡張子
– コンパイルしないで別のJavaプラットフォーム上で実行することができる

#### 実行
– mainメソッドから実行が開始される
– 「ランタイムライブラリ」「JVM(Java Virtual Machine)」が必要

####JRE(Java Runtime Environment)
– コンパイラ以外、Javaのプログラム実行に必要なものはすべて含まれる

元記事を表示

Spring Bootでログイン機能を実装してみる

前回の記事【[Spring Boot Flywayでmigration自動化をしてみる](https://qiita.com/megumi_622/items/c38100ca5b266e301643)】の続きで、ログイン処理を実装してみる

## build.gradle
**spring-boot-starter-security**を追加します。

“`gradle:build.gradle

plugins {
id ‘java’
id ‘org.springframework.boot’ version ‘2.3.1.BUILD-SNAPSHOT’
id ‘io.spring.dependency-management’ version ‘1.0.9.RELEASE’
id ‘com.avast.gradle.docker-compose’ version ‘0.12.1’
id ‘org.flywaydb.flyway’ version ‘6.4.3’
}

// …略

dependencies {
implemen

元記事を表示

Javaの継承

###継承
既存のクラスのフィールドやメソッドを別のクラスに引き継ぐことです。
継承してできる新しいクラスには独自のフィールドやメソッドを追加してカスタマイズできます。
継承されるクラスを「スーパークラス」、継承してできる新しいクラスを「サブクラス」と呼びます。
継承を用いて新しくサブクラスを定義するときは、「extends」を用いてクラスを定義します。

“`
class サブクラス名 extends スーパークラス名 {
}
“`
**extends スーパークラス名**でスーパークラスを継承します。

【例】Bicycle.javaとCar.javaの内容が重複しているものとします

“`Main.java
class Main {
public static void main(String[] args) {
〜省略〜
}
}
“`

“`Bicycle.java
class Bicycle extends Vehicle {

}
“`

“`Car.java
class Car extends Vehicle{

}
“`

“`Vehicle

元記事を表示

Azure アプリケーションのJVM にタイムゾーンを設定する

Tomcat に設定をするのではなくて、アプリケーションの設定で可能。

[Configuration] – [Application Settings] にて [+ New Application setting] として
WEBSITE_TIME_ZONE = Tokyo Standard Time
を設定する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/7d37982f-f150-6fb9-5940-3f896228a438.png)

値は以下と同じものを設定できるのかな?と思います。
https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values

以上。

元記事を表示

Java vs. JavaScript: What’s the Difference?

Java and Javascript, both may sound similar to one’s ears because of the word ‘java’, but these two are nothing alike. Although both Java and Javascript are used for developing web and mobile applications, among other things, there are really important differences between them.

Java was created in 1991 by James Gosling, and since then has become one of the most used programming languages in the world. After its creation, it took a group of Sun Microsystems engineers 4 years to develop Java. Oth

元記事を表示

Spring Boot2のユニットテストの書き方メモ

## はじめに

spring boot2でユニットテストを書くことになったので、
書き方を整理しようと思います。

Modelにセットした値のテストってどう書くんだっけ?
といったケースで思い出しように使ってもらえたらと思います。

サンプルコードは[GitHub](https://github.com/aoyaman/lean_spring_boot_unit_test)にあげてます。

### レスポンスStatusのテスト

“`Java

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

this.mockMvc.perform(get(“/”)).andDo(print())
// ステータス「200 OK」を返すかどうか
.andExpect(status().isOk())
.andExpect(status().is(200))
“`

ドキュメントは[こちら](https://docs.s

元記事を表示

美大生のためのプログラミング入門:四角形に関する様々な関数(その 1)

※ Qiita では、本文部分のみの印刷に苦労します。そのため、同じ内容を以下のページにも掲載しています。プリンツアウトしたり PDF 化したい人は、こちらのページを利用して下しさい:

http://gurakura.sakura.ne.jp/hellomondrian/rect2/

一覧はこちら:
http://gurakura.sakura.ne.jp/series/美大生のためのプログラミング入門/

Qiita 版の総合目次:
https://qiita.com/iigura/items/37180d127da93d0b8abb

# 自由な四角形の描き方
 関数 rect で描画される四角形は、水平・垂直の線分にて構成される長方形でした。
しかし、長方形だけが四角形というわけでもなく、四角形という定義にはもっと自由な形の四角形も含まれます。

quad 関数は、このような自由な四角形を描くための関数です。
引数は、quad(x1,y1, x2,y2, x3,y3, x4,y4) であり、それぞれ

x1,y1: 第 1 頂点の x 座標および y 座標
x2,y2:

元記事を表示

Android開発アプリ_準備編

# テーマ決め
下記のアイデアを出して、”オンライン飲み会の終了時間管理”アプリを選定。

– オンラインジェスチャーゲーム ×
”VS嵐”の番組で人気のジェスチェーゲームをオンラインでできたら楽しそうと思い発案。
既存のアプリは1台のスマホを使って行うものだったので、手元のスマホにそれぞれがアプリをダウンロードして行うやり方で考えたが、iPhoneの人がいた場合そちらのアプリ開発も必要なため断念
– 複数人でゴルフに行くときの最適なゴルフ場決定 △
趣味のゴルフのいつも迷う問題から発案。複数人でゴルフに行くときに、みんなの移動距離ができるだけ短くなる最適なゴルフ場を決定できるアプリがあればありがたい。しかし、最近ゴルフに行っていないので意欲がわかず断念。
– オンライン飲み会の終了時間管理 〇
コロナの影響でオンライン飲み会を行うことが増え、みんながしみじみ感じている問題。
既存のアプリでは、この機能をもったオンライン会議はあったが、既存のオンライン会議に+αするものはなさそうだったでそのアプローチで作成したい。

# 機能洗い出し
最低限下記の機能を

元記事を表示

【Spring】コントローラの例外出力テスト

リクエストを受け付けるコントローラのテストは基本的に`MockMvc`を使って書くことが多い。
例外を出力をさせる場合、その例外出力のテストは`org.assertj.core.api.Assertions.assertThatThrownBy`で実装できる。

## 例
### プロダクトコード
“`java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

@GetMapping(value = “exception”)
public void throwException() {
throw new IllegalStateException(“例外です”);
}
}
“`

### テストコード
“`java

import org.junit.T

元記事を表示

【VBA】Hibernate Toolsで生成したEntityクラスのプリミティブ型を対応する参照型に変換するツールを作ってみた

テーブル定義やVIEW定義をもとに対応するEntityクラスを瞬時に作成できるHibernate Tools。
とても便利なのですが、デフォルトでは数値型はプリミティブ型で作成されてしまいます。
DBの値にnullが入りうる場合、これだとNG。
対応する参照型(プリミティブ型と違ってnullも許容)に変換できる設定がないか探してみるも出てこない、、
これなら作ってしまったほうが速い!というわけで、上を実現するツールを作ってみました。

## 環境
– OS:Windows10
– VBA:7.1
– IDE:Eclipse2020-03
– Java:8
– MySQL:5.7
– Hibernate ORM:5.4
– Spring Boot:2.3.1

## Entityクラスの作成
Hibernate ToolsでのEntityクラスの作成方法は

– [Hibernate Toolsを使ってJPAのEntityクラスを生成する | Qiita](https://qiita.com/rubytomato@github/items/cb7c40cea2ff3225d5e3)

元記事を表示

java(カプセル化)

#カプセル化
・フィールドに不正な値が入らないように防ぐ
・「矛盾しないクラス」を作る
・「現実世界を忠実に真似る」オブジェクト指向の本質と直結している

#フィールド、メソッドに対してアクセス制限を行う

**アクセス修飾子(しゅうしょくし)**

| 名称    | 指定方法    | アクセスを許可する範囲 |
|:—————–|——————:|:——————:|
| private           |        private| 自分自身のクラスのみ |
| package private     |(何も書かない)|  自分と同じパッケージに属するクラス |
| protected |protected|自分と同じパッケージに属するか、自分を継承した子のクラス |
| public | public |

元記事を表示

Facadeパターンって何の役に立つの?

# 目的
Facadeパターンが何の役に立つのかを簡単に説明する(コード有り)

# Facadeパターンはどんな役に立つか?
簡単にいうと、**複数の処理のまとめ役**。
なので、依頼1つでいろんな仕事をやってくれる点で役に立つ。

# Facadeパターンの要件
– Facadeクラスはあくまでサブシステム内部に仕事を投げるだけで複雑な実装は持たない。
– Facadeクラスをサブシステム自体が利用する事はない。
– Facadeパターンはサブシステムの直接使用を妨げない。

# クラス図
## Facadeパターンのクラス図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190809/8dc7125b-3a8c-03c1-71a2-d4be2533b4cd.png)
> 引用元:[Wiki – Facadeパターン](https://ja.wikipedia.org/wiki/Facade_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3)

## 今回説明

元記事を表示

【Spring Batch】Spring Batchのchunk stepとtasklet stepの実現検証

#はじめに

Spring Batchの二つステップの種類に実現方法を検証します。今回はJava のアノテーションで実現します。

#ステップの種類

ステップには主に2つの種類があります。
「taskletのみのステップ」と「チャンクによるステップ」です。
以下ではそれぞれについて簡単に見ていきます。

1. taskletのみのステップ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480807/751e61bb-06b7-c42f-1d1c-9ac62337af07.png)

2. チャンクによるステップ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480807/8c3c9e43-20a1-c83c-f92c-d71c6c96822f.png)

#環境

Windows 10
JDK 1.8.0_251
STS 4.6.2

#

元記事を表示

【Java】標準入力を使いこなせないとpaizaのスキルチェックはDで詰む

##概要
Progateを軽くやったくらいでJavaの経験がないため、研修でpaizaのスキルチェック問題を解いているのですが、初日に予想外の所で詰まったのでメモします。

スキルチェックを始めると早々に
>文字Nが入力されるのでNを出力せよ

的な内容を指示されます。

System.out.print~で出力して終わりじゃん!と思うのですが
そのまま書くのは間違いとなります。

色々フォローされるProgateと違い
スキルチェックでは入力される値もこちらで読んであげる必要があります。
ここで「入力値を読み込む」方法を知らないと、paizaはDランクすら取れません。
##方法
簡単なのでyoutubeに投稿されている[Java標準入力解説](https://www.youtube.com/watch?v=nxd4CLklcfY)を見るか
[paizaラーニング](https://www.youtube.com/watch?v=nxd4CLklcfY)を見る事で理解できますが、せっかくなので使い方を書いてみます。

冒頭のような問題の場合、文字なので

“`Java
//変数を定義

元記事を表示

Androidアプリ個人開発キックオフ

# はじめに
学んだこと整理するためにもブログでまとめていこうと思います。
他の人の役に立てれば幸いです。間違いなどあれば指摘して頂ければと思います。
また、アドバイスなどもあればコメントいただけると助かります。

# 背景
残業禁止となり、副業を探していたが下記の理由から、個人開発で1個実績を作り副業につなげたいと思う

– C,C++(現保有スキル)で勤務日数が少ない案件がない
– アプリ開発の案件が多い
– 以前からAndroidアプリ開発に興味があった
– C以外の言語を学ぶいい機会である

# 目標
自作でアプリ開発を行い、GooglePlayストアで公開する。

– RA~ITを一通り自分で実施できること
– アプリ開発に必要なjavaの知識を理解する

# 開発に使用する言語選定
下記候補から、将来的な汎用性を考慮してJavaで行うことに決定。(Koltinと迷いましたが。)

– C/C++
– 現業務のスキルアップにも使えるが、AndroidStudio(アプリ開発の環境)を使用するとjavaなどに比べて工数がかかりそう。
– Java
– Andr

元記事を表示

Spring Boot の Docker Image を小さくする方法

# 要約

– カスタム JRE とマルチステージビルドを利用すれば Spring Boot の Docker Image を削減することができます。
– 以下が結果の要約になります。公式の AdoptOpenJDK の Docker Image よりも 1/5 以下の容量になっていることがわかります。

| AdoptOpenJDK | AdoptOpenJDK-Alpine | Custom Runtime |
| ——- | ————– | ————– |
| 436 MB | 358 MB | **85.5 MB** |

# サンプルコード

– 今回説明するサンプルコードは以下に格納しています。こちらのサンプルコードをもとに以降の説明を行っていきます。
– [java-container-build-sample (Github)](https://github.com/Takaichi00/java-container-build-sample)

# 手順① jdeps で必要なモジュー

元記事を表示

JMHでGraalVMの速度測定・比較してみた

## 環境
– macOS Mojava 10.14.4
– Scala 2.13.1
– sbt 1.3.8
– GraalVM 20.1

## この前の測定の大雑把な問題点

[前回の記事](https://qiita.com/kinshotomoya/items/39a821dd6a6a52202c0a#%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B)で、GraalVmと標準JVMの速度比較を行った。

しかし、コンパイル時間・ウォームアップ時間・純粋な実行時間をごちゃ混ぜにして測定していたので、Graal自体の純粋な速度比較ができていなかった。

今回やりたいことは、GraalVMのGraalと、標準JVMのC2コンパイラでの速度比較。

なので、コンパイル(クラスファイル生成)・ウォームアップ・純粋な実行時間をそれぞれ区別して、純粋な実行時間の比較を行う。

## 具体的な問題点

### 1.コンパイル(クラスファイル生成)時間も含めていた。
sbtで実行する場合、実行する

元記事を表示

レイヤードアーキテクチャにおける依存管理

# このページはなにか?
新規プロジェクトにて導入した、ビジネスロジックの管理方法を整理したページです。
「SpringにあるようなWeb API用の巨大DIコンテナまではいらないな」って状況で、関連するクラスをどう構造化、利用するか?がフォーカスポイントです。

# 前提
本プロジェクトは、エントリーポイントになる単一メソッドに引数を渡すと結果が返ってくる、シンプルな共通ライブラリでした。
エントリーポイントから、複数のエンティティに紐づくビジネスロジックが定義される(いわゆるMVCに近いアーキテクチャ)。

ビジネスロジックに変更が走る場合、エントリーポイントではなくビジネスロジックを抱えるサービスが増えたり変更したりする想定で今回は検討しました。

# 呼び元が直接サービスのインスタンスを生成、実行するのはなんだか気持ち悪い
エントリーポイントから参照するサービスレイヤーのクラスはせいぜい4とか5なので、直接インスタンスを生成してもいいんだけど…
1. クラスからインスタンスを生成する必要の有無。状態を持たないのに生成するんだっけ?究極staticコンテキストに押し込めてもよ

元記事を表示

【Java】 独自アノテーションの作成

# 経緯
当初のmodelに、多くのアノテーションを使って実装していたら、「見にくいから独自でアノテーション作って使えば見やすくなるよ」とレビューいただいたのでやってみた。

## before
`contollerクラス`

“`java
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping(path = “/sample”)
public class SampleController {

/**
* サンプルデータ取得API
*
* @param id サンプルデータID
* @return サンプルデータの詳細情報
*/
@GetMapping(path = “{id}”, produces = “application/json; charset=UTF-8”)
@ResponseStatus(HttpStatus.OK)
public Response getSampleDataDetails(@Nonnull @Pattern(regexp = “[0-9]{8}”

元記事を表示

OTHERカテゴリの最新記事