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

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

Jersey – What is Difference Between bind and bindAsContract in HK2?

Great explain.

https://stackoverflow.com/questions/56262240/difference-between-bindascontract-and-bind-in-hk2

元記事を表示

SpringBootでログイン中のユーザーのUserDetailsクラスを継承したクラスの情報を取得したい

###環境
Spring Boot 2.4.0
java 1.8
thymeleaf 3.0.11
Spring Security 2.4.0

###実現したいこと
ログイン中のユーザーのUSERDETAILSを継承したクラスの情報を取得したい。

###いろいろ試してなんとか実現
ほぼ丸一日かかりました。というかちゃんとSpringBootを理解していないのだとは思いますが、いろんなサイトを見て試してみてなんとかうまく行ったので、記録として残しておきます。

###USERDETAILSを継承しているクラス

“`java
Tenantsクラス
Staffクラス
“`

###ログイン認証
MyUserDetailsServiceクラスのloadUserByUsernameメソッドで、返すクラスを分けています。

“`java:MyUserDetailsServiceクラス
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 引数がnul

元記事を表示

2021年、最近のJavaに浮いた話題がない (ポエム)

*ポエムです。

[Software Development Trends in 2021 – ソフトウェア開発トレンド予測記事](https://qiita.com/e99h2121/items/89c047f3c1852f257ff5)をせっかく頑張って読んだので、他にも2021年版的な某かをまとめた。

Developer Roadmaps
https://roadmap.sh/
[The 2021 Web Developer Roadmap](https://levelup.gitconnected.com/the-2020-web-developer-roadmap-76503ddfb327)
2021年版に更新されているようだ。

[What are your plans to read/learn in 2021?](https://dev.to/deveconomics/what-are-your-plans-to-read-learn-in-2021-3nkj)
に記載されている以下は便利かもしれない。無料ツール・リソース50。
[50 free tools an

元記事を表示

line-bot-sdk-java 自社サービスユーザーとLINEユーザーのアカウント連携

[line-bot-sdk-java](https://github.com/line/line-bot-sdk-java)を使用した、自社サービスの既存ユーザーアカウントとLINEユーザーのアカウントの連携手順についてメモ。
`※記事内のソースは例外処理等記述してないので、注意。`

[サンプルソースコード](https://github.com/try0/line-bot-java-sample/blob/main/line-bot-java-app/src/main/java/jp/try0/line/bot/sample/app/resource/WebhookResource.java)

[アカウント連携のシーケンス](https://developers.line.biz/ja/docs/messaging-api/linking-accounts/#%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E9%80%A3%E6%90%BA%E3%81%AE%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%

元記事を表示

RHEL/CentOSでの暗号化ポリシーで、Javaのセキュリティ設定が変わるという話

# What’s?

Red Hat Enterprise Linuxでは、システムの暗号化ポリシーを設定できます。

[システム全体の暗号化ポリシーの使用](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)

この内容で、Javaのセキュリティ設定も変わりますよ、という話です。

# 環境

CentOS 8で確認してみます。

“`shell
$ cat /etc/redhat-release
CentOS Linux release 8.3.2011
“`

使用するJavaは、OpenJDK 8とします。

“`shell
$ java -version
openjdk version “1.8.0_275”
OpenJDK Runtime Environment (build 1.8.0_275-

元記事を表示

Lombokの@Accessorsについて

@Accessors:getter/setterをカスタマイズするためのアノテーション
       @Getter/@Setterなどと一緒に使う
       オプションは “chain” “fluent” “prefix” の3種類

### 環境
Java : 1.8
Lombok : 1.18.16
(SpringBoot : 2.3.7)

## setterのメソッドチェーン化

`@Accessors(chain = true)`でsetterをメソッドチェーン化する

“`java
user.setName(“Tom”).setAge(24);
“`

のように連続して記述できる

<実際に生成されるコード>

“`java
public User setName(final String name) {
this.name = name;
return this;
}
“`

<ポイント>
つけるのはクラスでもフィールドでも可、ただしどちらに付けても**クラス内に一つでも存在すると全フィールドに適用される**

## getter/setterを

元記事を表示

InputStreamをStringに変換したい

必要になるたびにぐぐるのに疲れたので自分用のメモとしておいておきますね(´・ω・`)

`InputStream`をすべて読み込んで`String`に変換したい場合、おおよそ以下のように書いておけば大丈夫です。

“`java
public static String readAll(InputStream in) throws IOException {
byte[] b = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
return out.toString();
}
“`

また`String`に変換したい`InputStream`の文字コードがUTF-8ではない場合、`ByteArrayOutputStream.toString(Charset charset)`を利用すればよい

元記事を表示

初心者が1から始めるJava開発-Vol.1- eclipseセットアップ編

今回はJava開発を1から始める初心者向けの投稿をしたいと思います。

Javaの記事はいつか書きます(自学のために)。

———————————
**Javaの初心者向けおすすめ本**

Spring Bootで、単体テスト実行時にFlywayを起動しない方法

# はじめに
現在のプロジェクトで、 `SpringBoot` と `Flyway` を使用していますが、
テスト実行時(当プロジェクトでは `Gradle`を使用しているため、 `./gradlew test` )に、
`Flyway` の `Migrate` が走ってしまう現象がありました。
その時の解決方法の一つになります。

# どのような解決をしたのか
ご存知の方からしたら当たり前のことかもしれませんが、
`SpringBoot` はテスト実行時に、設定ファイルの優先順位が変わります。
具体的には、下記のような構成だとして、

“`zsh
/project
├── build.gradle
├── gradlew
└── src
├── main
│ ├── com
│ │ └── …
│ └── resources
│ └── application.yml
└── test
├── com
│ └── …

元記事を表示

Bean scopeとBean Life Cycle

## Bean scope

Bean scope
Springで別途の設定をしない場合、default bean scopeはsingletonで構成されます。

singleton : spring default bean scope
prototype:アプリケーションリクエスト時に(getBean()メソッドが呼び出されるたびに)スプリングが新しいインスタンスを生成します。
request:HTTP リクエストごとにインスタンス化され、リクエストが終わると消滅します。
session:HTTP セッションごとにインスタンス化され、セッションが終了すると消滅します。
global session:ポートレート基盤のウェブアプリケーション用途で、全域セッションスコープが空のようなスプリングMVCを使用したポータルアプリケーション内のすべてのポートレートの間で共有できます。
thread:新しいスレッドから要請すると、新しいbeanインスタンスを作成します。 同じスレッドの要請には常に同じインスタンスが返されます。
custom : org.pringframework.beans

元記事を表示

【Java】DateクラスのcompareToメソッドの使い方

#compareToメソッドとは?
Dateクラスの日にちを比較するメソッドで、メソッドの呼び出し元の日付と引数の日付を比較します。

以下のように、引数と呼び出し元を比較し、値を返します
>メソッドの呼び出し元の値が、引数と等しい場合は0
>メソッドの呼び出し元の値が、引数より前の場合は-1
>メソッドの呼び出し元の値が、引数より後の場合は1

#使い方

“`java
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
Date date1,date2;
date1 = sdf.parse(“20210117”);
date2 = sdf.parse(“20210118”);

System.out.println(date1.compareTo(date2)); // -1 ->date1はdate2より前である
System.out.println(date2.compareTo(date1)); // 1 ->date2はdate1よ

元記事を表示

複雑なfor文(基礎)

# 複雑なfor文

### ❶初期化処理 ❷繰り返し条件 ❸繰り返し時処理の3つを工夫し、高度な繰り返しを実現
単に「◯◯回繰り返す」という単純な繰り返しではなく、下記のようにすれば少し高度な繰り返しが行える

“`java
//ループ変数を1からスタートする
for (int i = 1; i < 10; i++){...} //ループ変数を2ずつ増やす for (int i = 0; i < 10; i += 2){...} //ループ変数を10から1ずつ1まで減らしていく for (int i = 10; i > 0; i–){…}

//ループ変数を初期化しない
for (; i < 10; i++){...} //繰り返し時の処理を行わない for (int i = 0; i < 10;){...}  ```

元記事を表示

awtで”EXCEPTION_ACCESS_VIOLATION”が出たとき

前書き

大学のjavaの課題でawtを使おうとしたところ,大量のエラーが出て小一時間格闘したので解決策を残しておきます。
初めての記事なのでご了承ください。

環境

OS : Windows10
JDK : 15.0.1
JRE : 15.0.1

後述のエラー文にこのような記述があったのでそれを参考にしています。
vm_info: OpenJDK 64-Bit Server VM (15.0.1+9-18) for windows-amd64 JRE (15.0.1+9-18)

筆者はInteliJIDEA Ultimateをエディタとして利用しており,インストール時点でjdkもjreもなかったのでIDEAの指示に従って一番新しいものをインストールした形です。

症状

ソースコード

“`java:AWTGraphics.java
import java.awt.*;

public class AWTGraphics extends Canvas
{
static final int WORLD

元記事を表示

Azure Java開発用のサンプルコード集

[Azure-Java-SDK JavaDoc](http://azure.github.io/ref-docs/java/index-all.html)

[Github Azure-Java-SDK](https://github.com/Azure-Samples?q=&type=&language=java)

[MicroSoft公式 : コードサンプル検索サイト](https://docs.microsoft.com/ja-jp/samples/browse/)

元記事を表示

Java O/Rマッパーの種類と選定方法について調べたことのメモ

#O/Rマッパーとは#
「O/Rマッパー」って名前、なんか小学生の必殺技的な響きしてますよね。
最近業務で色々なO/Rマッパーに触れる機会があったので、ついでに調べたことをざっくりまとめました。

O/Rマッピングとは、オブジェクト指向プログラミング言語におけるオブジェクトとリレーショナルデータベース(RDB)の間でデータ形式の相互変換を行うこと。
[IT用語辞典 -O/Rマッパーとは](https://e-words.jp/w/O-R%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0.html#:~:text=O%2FR%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF,O%2FR%20mapper%EF%BC%89%E3%81%A8%E3%81%84%E3%81%86%E3%80%82)

簡単に言うとJavaなどのプログラミング言語とRDBの橋渡しをしてくれるものです。

もっと詳しく知りたい方
[オブジェクト関係マッピング](https://qiita.com/y

元記事を表示

JavaEEとJakartaEE、どう違うの?

 よく考えてみると、わかりやすい説明がほとんどないことに気づきました。戸惑っている人も多いのではないかと思ったので、あえて、誤解をおそれず、本当のところ(と思うこと)をやさしく書いてみました。(もしも勘違いや間違いなどがあれば、お知らせください。)
#Java EEのままではいけなかったの?
 2017年に、Java EEがOaracle社からEclipse財団に移譲されるという記事を見て、最初に思ったことでした。今は、大分時間が経ったので、少しわかるような気がします。背景として、クラウドネイティブという大きな潮流があったことがあげられます。

 docker(2013年)やKubernetes(2015年)のようなシステムの登場が大きな契機でした。エンタープライズシステム開発の将来を予見するような、エポックメイキングなプロダクトです。ただ、Oracle社の動きは鈍く、意欲も見えなかったので、これに対して、コミュニティでは、 Java EE Guardiansを結成(2016年)し、Orcle社へ働きかけました。そして、Microprofile(2016年)が登場する一方、ようやく、J

元記事を表示

JavaでRSA公開鍵による暗号化と復号化の方法

RSAを使った暗号化と復号化のやり方を今日も忘れたので備忘録として残しておく。

マイクロサービスアーキテクチャにおいて、ユーザーの認証情報を引き渡していくための方法として、いろいろなやり方があるが、オーバーヘッドが小さく確実にサービス側、呼び出し元の相互に認証と認可が可能なので公開鍵を使った認証済みのユーザー情報の暗号化がいいと思う。

なお、RSAの場合、鍵長に1024ビットを指定すると128バイトとなり、パディングが11バイトなので暗号化可能な文字列の長さは117バイトまでとなる。

認証済みのユーザーのIDなどを送信するには十分であるが、このあたりは注意が必要だ。

## RSA鍵ペアの作成

“`java
KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”);
keyGen.initialize(1024); // RSA鍵の長さを指定する
KeyPair keyPair = keyGen.generateKeyPair();
“`

`KeyPair` には、秘密鍵と公開鍵の両方が含まれている。

#

元記事を表示

Listについて【Java】

#初期化① add
“`java:Main.java
package com.test;

import java.util.ArrayList;
import java.util.List;

public class Main {
public static void main(String[] args) {
List animals = new ArrayList<>();
animals.add(“dog”);
animals.add(“cat”);
animals.add(“pig”);
System.out.println(animals); // [dog, cat, pig]
}
}
“`

#初期化② Arrays.asList
※固定サイズのリストになるので注意
参考:[Java – Arrays.asList の注意点](https://qiita.com/HomMarkHunt/items/c0172bd6c9801c5768d2)

“`ja

元記事を表示

Processing ライブラリ “ControlP5”, “Fisica” を使って遊ぼう

こんにちは。最近は趣味でProcessingにハマっています(予定)
Processingオリジナルのライブラリとして”ControlP5″と”Fisica”があります。
実際に作ってみたものを例に、どのようなことに使えるのか、注意点も混じえて解説出来ればと思っております。

#実物
![My-Movie-5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615169/71f11c59-36a6-2418-a515-48bec6579929.gif)
※2倍速です。

#コード
###ライブラリの追加
「スケッチ」→「ライブラリをインポート..」→「ライブラリを追加..」から検索してください。
![スクリーンショット 2021-01-15 8.57.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/615169/95fae1a2-ab22-7b0f-2ef8-f3461bd19055.png)

あとはコードの初

元記事を表示

【Java】「エスケープ文字が不正です」「エンコーディングMS932にマップできません」の対処メモ

こんばんは。

今、自分の中で一大プロジェクトを進行中です。
(頓挫するかも知れないので内容は伏せます・・いつかここで公開できたら!)

その中のごく一部のプログラムを作るために、Javaでテキストの読み込み・出力ができるプログラムを作っています。
windows10になってから、デフォルトの文字コードがUTF-8になりました。
VbscriptでUTF-8のファイルの入出力を組もうと思ったのですが、従来のShift-Jis専用の処理だと文字化けしてしまいます。
Vbscript使いの皆さんは、コーディング方法を変えた感じでしょうか?
例)テキストファイルのレコードを読み込む処理
dataline = inStream.readline
      ↓
dataline = inStream.readtext(-2)
自分の会社のPCには、Vbscriptのツールが大量に保存してあるので、どうやって対応していこうかなあと悩み中です。
まあそんな事もあり、せっかくなので勉強中のJavaで組もうと思った次第です。
そこで発生したコンパイルエラーについて、対処しましたのでメモとして投稿します

元記事を表示

OTHERカテゴリの最新記事