JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

IntelliJで空のプロジェクトを作成してからHelloWorldを実行するまで

## 環境
– Windows 11
– IntelliJ 2023.3.6

## 新規プロジェクトの作成
今回は「空のプロジェクト」を選んで作成します。
![image1-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759729/9f4880e6-c866-d8e8-0b27-02e8ff02567a.png)

## srcディレクトリの作成
作成したプロジェクトの直下に`src`ディレクトリを作成します。
![image1-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3759729/df608cbc-927b-0bf1-8cc8-41c64ea4bd5d.png)

## プロジェクト設定の変更
IntelliJのメニューから「ファイル」→「プロジェクト構造」を選択してプロジェクト構造ウインドウを開きます。
![image1-0.png](https://qiita-image-store.s3.a

元記事を表示

ConstraintViolationExceptionからパラメタ名が取得できない

## 要約

* Spring BootでAPIを開発しており、パスパラメタへバリデーションを設定した
* バリデーションを通過できなかったときにレスポンスボディへパラメタ名と理由を設定したい
* しかしパラメタ名の取得でつまづいたのでその記録を記載

### Controllerの例

“`java:OrderController.java
@RestController
@Validated
@RequestMapping(“/api/”)
public class OrderController {

@PostMapping(“/order/{pathOrderId}”)
public ResponseEntity postOrder(
@PathVariable(name = “pathOrderId”) @Size(min = 1, max = 6) String pathOrderId,
@RequestBody @Validated OrderRequest request){
//

元記事を表示

M1MacでJava8とPostgreSQL13の環境構築

# 1. JDKのインストール
JDK(Java Development Kit)は、環境構築するためのファイルがパッケージされている。
以下の公式サイトから「jdk-8u401-macosx-aarch64.dmg」をダウンロード

https://www.oracle.com/java/technologies/downloads/#java8-mac

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/a0c1152b-f911-a4a4-1b5e-7f931e856a60.png)

ダウンロードの前にプロファイル作成が必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2674841/7ab9a1c7-9387-13cd-5ebb-3b1a07d9a3bc.png)

インストールを進める
![image.png](https://qiita-image-store.

元記事を表示

#10【勉強メモ】エヴァンス本からざっくり理解するDDD

## 目標
・ふわっとした理解のDDDについて[エヴァンス本](https://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9/dp/4798121967/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%B

元記事を表示

SpringBootでApachePOIを使ったxlsxファイルダウンロードの基礎

# この記事はこれの続きです

https://qiita.com/waokitsune/items/806b7f87e9a8348fb47a

# 概要

まず **ApachePOIを導入するところから** 始まります。
そして、 **最小限のコード** で **最低限のxlsxファイル** がダウンロードできるところまで作ります。

# build.gradle

dependenciesに下記二つを追記。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/df4ba528-ed19-8978-68b0-bec16501ab4c.png)

“`:コピペ用
implementation ‘org.apache.poi:poi:5.2.5’
implementation ‘org.apache.poi:poi-ooxml:5.2.5’
“`

build.gradleを変更したら下記を忘れないように注意。
![image.png](https://qiita-image

元記事を表示

messageについて

~~~java
@Configuration
public class AppConfig {

@Autowired
private MessageSource messageSource;

@Bean
public String getMessage() {
// プレースホルダーを置換する値の配列
Object[] args = {“John”, “Doe”};

// ロケールを取得
Locale locale = LocaleContextHolder.getLocale();

// MessageSourceResolvableを使用してメッセージを取得
MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(“hello.message”, args, “Default message”, locale);
String

元記事を表示

[Vision API Product Search] Cloud Vision APIをJavaで使ってみる(画像検索)

Googleが提供しているVision API Product Searchを
Javaで使ってみました。
Googleサービスアカウントを使用して、登録した商品画像に対して
ローカルにある画像から類似画像の検索をかけてみました。

***Vision API Product Searchとは***
Googleが提供しているAPIで、登録した画像から類似画像を検索するサービスです。

料金は、月間費用で予測費用とストレージ費用に分かれていて、
登録画像数が1000枚までならば、
 どちらも無料。
登録画像数が500万枚までならば、
 予測費用が$4.5/1000枚、ストレージ費用が$0.1/1000枚
登録画像数が2000万枚までならば、
 予測費用が$1.8/1000枚、ストレージ費用が$0.1/1000枚
となっています。

|No||目次|
|—|—|—|
|1||[Cloud Vision APIを使用するための準備](#1-cloud-vision-apiを使用するための準備)|
||1|[プロジェクトの作成](#11-プロジェクトの作成)|
||2|[Clou

元記事を表示

【初学者】Javaで二重引用符(”)を文字列として表示するには?

# エスケープシーケンスを使ってみた
Javaで二重引用符(“)を文字列として表示するにはどうしたら良いんだ…。

ってことで試しにコードを書いてみます。
“`java:Test.java
System.out.println(“私は”ちゃんを愛している”)
“`
二重引用符を愛している人など存在しないと思いますがそれはさておき、
上記のコードだとコンパイルエラーになってしまいますよね。

:::note info
Javaでの二重引用符は【囲った部分を文字列として示す】という
特別な意味を持った記号であるため、通常の文字列として表すにはひと手間必要になります。
:::

ではどうすれば良いのか。
## 正解は **【エスケープシーケンスを使う】** ですね。

エスケープシーケンスを使えば二重引用符などの特別な意味を持つ記号を文字列として扱うことができるようになります。

さきほどのコードを以下のように書き換えるだけです。
“`java:Test.java
System.out.println(“私は\”ちゃんを愛している”)
“`
“`
私は”ちゃんを愛している

元記事を表示

【Webアプリ開発】23卒、新卒1年目にやれたこと

Hello, everyone. どうも、新卒1年目エンジニアでした。

年度が変わります。せっかくの機会なので、今年度(2023年度)やったことを振り返ります。

# 筆者の略歴

– 大学時代(2019.4~2023.3)
– 情報系の学部を卒業(23卒)
– 授業で一通りのコンピュータサイエンスは知っている状態
– RISC-V OSを実験で作って、セマフォ使って並列処理動かしたのが思い出
– 教育データをAIでこねこねして、最終的にXAI(Explainable AI)の話につなげた卒業研究
– Pythonいっぱいやった
– 就職(2023.4~)
– 某事業会社の開発部門に配属
– 上流から下流までしっかりやる
– Webアプリ作ることが多い

# やったこといろいろ

## 1. Webエンジニアの超基礎研修

社内での研修期間を存分に利用して、Webエンジニアとして育ちました。そもそも、まともにWebアプリを作ったことすらなかった筆者だったので、すべてを本当に基礎から学びました。

###

元記事を表示

GradleでJDKを自動インストールしてくれるToolchainを触ってみる

## 最近のGradleはビルドの際のJDKを自動でダウンロード&インストールする機能がついている

みなさんこんにちは! Gradle 初心者です!

Gradle は 7.6 から [Toolchain](https://docs.gradle.org/current/userguide/toolchains.html) という機能があり、ビルドに使うJDKを自動インストールすることができます。

具体的には以下のように書くと、Javaのビルド時にGradleが事前インストール無しで自動的にJDK 22をダウンロードしてビルドに使ってくれます。[^1]

[^1]: 本記事で利用するGradleのバージョンは 8.7, 実行環境のJavaは 11 以降を利用しています。OSはIntel Macです。この記事ではJDKの自動インストールに触れていますが、Gradleを実行するJVMはそれはそれで別途必要です。

“`groovy:settings.gradle
plugins { id ‘org.gradle.toolchains.foojay-resolver-conventio

元記事を表示

Keycloakのコンポーネント設計の基礎

# 本記事の概要、目的

本記事は、OSSのIDプロバイダであるKeycloakを、ソースコード上から機能カスタマイズする際に重要となるポイントを押さえた解説を行います。
Keycloakの特徴として、OSSであり、拡張性高く設計されている点が挙げられるため、認証サーバを選定する際、拡張性を重視する際には有力な候補となるかと思います。

実際にKeycloakで安全に機能拡張する際、基礎的な構造を理解した上でコーディングを行う必要があります。
しかし、コンポーネント設計に関してKeycloakは独自のアーキテクチャを採用しており、若干取っ付きづらい面があります。

本記事は

* これからKeycloakのカスタマイズを行う
* Keycloakのカスタマイズを行ってみたものの、イマイチ仕組みがよくわからない

という人向けに、土台を理解した上で納得のいくコーディングが行えることを目標としています。

# 本記事で扱わないもの
以下は、前述した趣旨に沿わないため割愛させて頂きます。

* IDプロバイダとしてのKeycloakの基本的な理解
* Javaコード以外のKeycloakカス

元記事を表示

SpringBootでログ出力の基礎

# この記事はこれの続きです

https://qiita.com/waokitsune/items/098fbfa874175faad474

# 概要

**SpringBootでログ出力をやったことないから、まず何をどうしたらいいか分からない** という状態向けです。

* SpringBootの標準的な機能を使う。
* 最小限のコード。

という基礎的な内容です。

# logback-spring.xml作成

logback-spring.xmlとは『ログ出力先』『ログフォーマット』などが書かれた **ログ設定ファイル** です。
これを **特定の場所に置くと** SpringBootが勝手にログ機能を用意してくれます。

下記のように作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/2299c111-9b64-4aae-f790-551664f3c94b.png)

![image.png](https://qiita-image-store.s3.ap

元記事を表示

JAVAで現在時刻を文字列にフォーマット(変換)

# やり方

“`java:
String now_1_ = DateTimeFormatter.ofPattern(“yyyy/MM/dd_HH:mm:ss.SSS”).format(LocalDateTime.now());
System.out.println(now_1_);

String now_2_ = DateTimeFormatter.ofPattern(“yyyy年MM月dd日(E曜日) HH時mm分ss秒SSS”).format(LocalDateTime.now());
System.out.println(now_2_);
“`

# 参考サイトさん

https://qiita.com/t_t238/items/5db1c6ca131a61ebd6ae

# 実行結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/ef9f034b-f65c-0075-6e44-2c8f9366a64b.png)

# バージョン

Microsoft Wi

元記事を表示

JAVAのコードでJAVAのバージョン取得

# やり方

“`java:
String java_version_ = System.getProperty(“java.version”);
System.out.println(java_version_);
“`

# 実行結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/f7a0fc4e-f92e-549e-fae5-3caa82e5ecdf.png)

# バージョン

Microsoft Windows [Version 10.0.19045.4170]
JAVA 17.0.8.1

元記事を表示

waterfallを使ってマイクラサーバーをゲートとゲートで繋ぐ方法

今回はマイクラサーバーをゲートとゲートで繋ぐ方法を自宅サーバーとレンタルサーバーの2つに分けて解説します。
![無題 2023-04-25 21-19-43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3044030/b3d32298-5037-ce47-9473-f35ff94663d5.jpeg)
# 今回の調理道具
waterfall.jar waterfall以外のマインクラフトサーバー waterfall用のサーバー
※どのサーバーもレンタルでも自鯖でもよい

# 注意書き
この記事は普通のマインクラフト(プラグインサーバー)が立てれていることを前提にして解説しております。
**最低でもwaterfallとマインクラフトをするためのサーバーの二つが必要です。**
立てていない方は申し訳ございませんが違う記事を参考にしてサーバーを立ててください
今回はサーバーを二つつなぐのでwaterfallサーバーとマインクラフトサーバーを二つ用意していますが、マインクラフトサーバーが一つしかない方も問題

元記事を表示

Stringのnull、空文字チェックにはStringUtilsのメソッドを使おう!

# はじめに
こんにちは。なっしーです!
前回に引き続き、Java(Apache、Spring環境)のtipsを紹介しようと思います!

前回はこちら↓
https://qiita.com/nashi-nashi/items/e1b0b7cf6d8934857950

# 想定読者層
前回と同じく若手向けの記事です。
Javaでの業務ロジックや個人開発などでコードを書き始めた人を想定しています。

# 忙しい人向け結論
– Stringのnull、空文字チェックにはStringUtilsのメソッド(isEmpty()、isBlank())を使おう!
– StringUtilsには他にも便利なString用のメソッドがあるよ!
– Apache版とSpring版で同じメソッドとかがあるけど機能が違うよ!
– Spring版StringUtils.isEmpty()は非推奨になったよ!

# 本編
今回は主に**Apache**版の`StringUtils.isEmpty()`と`StringUtils.isBlank()`について解説します。

皆さんはString型の文字列のn

元記事を表示

SpringとMyBatisを使ったアプリケーション開発のメモ -その3 RESTEasy編-

# この記事について
この記事は 2011年に自分のブログに書いていた記事を発掘したものです。10年以上の文章なので、表現が稚拙だったり、時代が古いところもありますが、何かの役に立つかもしれないと考え、Qiitaに持ってくることにしました。

本連載の [「SpringとMyBatisを使ったアプリケーション開発のメモ -その1-」](https://qiita.com/kunichiko/items/3c06fc480a2eff522945) と [「SpringとMyBatisを使ったアプリケーション開発のメモ -その2-」](https://qiita.com/kunichiko/items/b7987750364ae8820ae3) で、SpringとMyBatisを使ったアプリケーション開発について調べ、Springを使うとDI (Dependency Injection) という技法使ってサーバサイドアプリケーションをすっきりと記述できるのがわかりました。

ただ、前回までに作成したアプリケーションはmain()メソッドからサービス層を呼び出すだけのもので、きちん

元記事を表示

SpringとMyBatisを使ったアプリケーション開発のメモ -その2-

# この記事について
この記事は 2011年に自分のブログに書いていた記事を発掘したものです。10年以上の文章なので、表現が稚拙だったり、時代が古いところもありますが、何かの役に立つかもしれないと考え、Qiitaに持ってくることにしました。


# DIコンテナによるトランザクション管理
## MyBatis単体で書いた場合と比較してみる
DIコンテナが何をしていたのか説明する前に、「もしSpringが無かったらどうやって書いていたはずだったのか」というのを示したいと思います。両者を対比をする事でDIコンテナの存在意義やDIという考え方の面白さがわかってくるかもしれません。

ではさっそく、前回作ったCard管理アプリケーションを、SpringなどのDIコンテナを使わないように直してみます。

コード中でSpringが明示的に顔を出しているのは、mainメソッドでCardServiceインスタンスを取得しているところです。ここを次のようにnewするコードに書き換える事になります。

“`java
CardService service = new CardService

元記事を表示

SpringとMyBatisを使ったアプリケーション開発のメモ -その1-

# この記事について

この記事は 2011年に自分のブログに書いていた記事を発掘したものです。10年以上の文章なので、表現が稚拙だったり、時代が古いところもありますが、何かの役に立つかもしれないと考え、Qiitaに持ってくることにしました。

—-

# はじめに

Javaの開発をしている人は大概サーバサイドで何か作ってるんじゃないかと思いますが、このサーバサイドJavaを取り巻く環境は日々めまぐるしく進歩していて、ちょっと気を抜くとすぐに置いて行かれてしまいます。

特にサーバサイドJavaを取り巻く技術として「DI (Dependency Injection)」という単語は良く聞くと思いますが、正直僕はあまり突っ込んで使っていませんでした。DIの思想自体は理解しているつもりで、メリットも分かっているつもりではいましたが、「DIを積極的に導入した場合にどういうものが出来上がるのか」について、自分の中でもやもやとした状態が続いていたからです。

そのもやもやを晴らそうとドキュメントベースで知識は入れていたものの、DIコンテナの一つである Spring3 のマニュアルとか700ペ

元記事を表示

SpringBootでEntityを使ってMySQLのレコード更新(アップサート)

# この記事はこれの続きです

https://qiita.com/waokitsune/items/4f73350f54b0474c99b1

# Repositoryクラス

変更無しです。

# Serviceクラス

Repositoryクラスの “`save()“` で1レコード分、 “`saveAll()“` で複数件。

“`java:UnkoService.java
package com.example.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class UnkoService {

@Autowired
Unko

元記事を表示

OTHERカテゴリの最新記事