親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Java

Javaのネイティブメソッドの代表例と使用時の注意点

Javaのネイティブメソッドの代表例 Javaのネイティブメソッド使用時の注意点 Javaのネイティブメソッドの代表例 Javaのネイティブメソッドは、通常、ネイティブコードで書かれたライブラリや関数を呼び出すために使用されます。 以下は、代表的なネイティブ…

SpringBootを3系にバージョンアップで「シンボル'servlet'を解決できません」エラーが発生

SpringBoot3より発生するエラー SpringBoot2系からSpringBoot3にバージョンアップした際に発生する代表的なエラーになりますが、「シンボル'servlet'を解決できません」というエラーが発生します。 エラー内容はキャプチャの通り。 SpringBoot3よりJava EEか…

JavaのバージョンアップでSpringBootのOpenJDK 64-Bit Server VM warning:エラー

Java13以降発生するSpringBootのエラー SpringBootを使用していてJavaのバージョンを17に上げた時、以下のエラーが発生しました。 OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be re…

Javaのバージョンアップでjava: java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags

Java11以降、java: java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags Javaのバージョンアップで以下のようなエラーが発生しました。 java: java.lang.ExceptionInInitializerError com.sun.tools.javac.code.TypeTags pom.xmlに書…

MacにJava17(Amazon Correto)をダウンロード

Java17(Amazon Correto)のダウンロード手順 MacにJava17(Amazon Correto)をダウンロードした手順を記載します。 まずは以下のAmazon Corretのページに遷移します。 https://docs.aws.amazon.com/ja_jp/corretto/latest/corretto-17-ug/downloads-list.htmlこ…

SpringBootでDBへの接続方法

Spring BootでMySQLへの接続方法 Spring BootでOracle DBへの接続方法 Spring BootでMySQLへの接続方法 MySQLへ接続する場合は以下のようになります。 spring: datasource: url: jdbc:mysql://接続先(IPやドメイン)/データベース名 username: DBのユーザ名 p…

SpringBootでThymeleafの変更をビルドや再起動なしで反映させる方法

通常のThymeleafの変更反映 application.ymlもしくはapplication.propertiesにprefixの設定を追加 application.ymlの場合 application.propertiesの場合 通常のThymeleafの変更反映 SpringBootでテンプレートエンジンとして使用されるThymeleafですが、デフ…

Spring BootでSQLクエリを直接実行させる方法

Spring Data JPAについて SQLを記載したいとき 方法1: EntityManagerを使用 方法2: Repositoryで@Queryアノテーションを使用したメソッドを実装 Spring Data JPAについて みなさんSpring Bootを使用する場合、Spring Data JPAを使用してSQLを記載せずにDBを…

Spring Bootで環境変数等の定義ファイルの値を取得する方法

Spring Bootの定義ファイル Javaのソースで値を取得する方法 どんな時に使用する? Spring Bootの定義ファイル Spring Bootでは、プロパティ値を設定する定義ファイルとして、application.ymlやapplication.propertiesがありますね。 設定する内容としては、…

MacでSQL Developerが重い・起動できなくなる・DBに接続できなくなる場合の対処法

SQL Developerが不安定になる場合 Oracle SQLに接続するためのSQL Developerの動作が不安定の時の対処方についてです。 SQL Developerはクライアントツールとして非常に有用ですよね。 特にMacからOracleに接続できるものは少ないため、Macユーザには重宝さ…

Javaのファイル読み込みメソッドを整理

ファイルを読み込む処理 FileInputStreamでファイルの内容を読み込み InputStreamReaderで指定した文字コードに FileReaderを使えばInputStreamReader要らず 旧来のファイルの読み込み方比較 方法1 方法2 BufferedReaderを使えば一行単位で呼び出し可能に Ja…

Spring Bootの起動が遅いので試行錯誤した話

コンパイル言語の宿命 Initialized JPA EntityManagerFactory for persistence unit ‘default’ 他の試行錯誤 コンパイル言語の宿命 Spring Bootに限らずJava等コンパイル言語の宿命ですが、ちょっとした変更でもいちいちコンパイルが必要になりますよね。 そ…

Spring Boot のCORS対策

CORSとは? CORSの対策 Spring Bootでの対策 方法1 @CrossOriginアノテーション 方法2 Spring SecurityでCORSの設定をする方法 まずはSpring Securityのインストール WebSecurityConfigurerAdapterにCORSの設定 CORSとは? 通常Webページでは、同一生成元ポ…

SpringBootのFormバリデーションで、Listを使って別々の項目に同じチェック

SpringBootのFormで使われるList SpringBootのFormで使われるList SpringBootのFormバリデーションで独自バリデーションを作成し、 適用している人にとってはよく見かけるListですが、これの使い道は知ってますか?例) public @interface List { TestValida…

Entityの@ManyToOneでCascadeオプションの使い道

Entityの@ManyToOne まずはEntityについて Cascadeはデータベース操作に関連 Entityの@ManyToOne あるEntity(エンティティ)に対してフィールドを設定した時に、 Entityとフィールドが多対一の関係にある時に使用します。 このあたりの説明は長くなるので、…

AWSでのメール送信でタイムアウトが頻繁に発生

SpringBoot + EC2の構成で、メール送信エラーが頻発 さくらサーバのサポートセンターに問い合わせ 本当の原因はEC2の送信制限 ちなみに… SpringBoot + EC2の構成で、メール送信エラーが頻発 SpringBoot + EC2のアプリケーションでメルマガ機能を作成していま…

@Columnのlengthやnullableでエラー検知してくれない

Spring Bootのバリデーション Bean ValidationとJPA定義 Spring Data JPA (Hibernate)使用時のJPA制約 暫定対応 Spring Bootのバリデーション Spring Bootでは、フォームやエンティティクラスにおいて、アノテーションによる入力値チェックが可能なことはご…

Spring BootをIDEを使わずコマンドで実行

開発環境でのSpring Bootの実行 mvnコマンドで実行 開発環境でのSpring Bootの実行 でも記載している通り、Spring Bootは開発環境だとIDEなどで簡単に設定することが可能です。 ちょっとの設定でいつでも停止や実行ができるので楽ですよね。 ブレークポイン…

Tomcatのログファイルを整理せよ!

Tomcatのデフォルトのログ設定 Tomcatで出力されるログファイル catalina.outのローテート設定 ログファイルのローテート設定 logrotateの設定確認 logrotateの実行 localhost.YYYY-MM-DD.logのローテート設定 まとめ Tomcatのデフォルトのログ設定 タイトル…

Spring Data JPAでパラメータ以外でコロンを使いたい

RepositoryにSQLを直接記入 パラメータ以外でコロンを使いたい 解決方法はエスケープ RepositoryにSQLを直接記入 Spring Data JPAでORマッパーでは書けないようなSQLを実行したい場合、Repositoryに直接構文を書きますよね。 そんな時、パラメータで変数の値…

Spring Data JPA のfind+OrderByで、No property desc foundエラー時の対処法

Spring Data JPAでのOrderBy whereを指定しない場合、OrderByの前にByが必要 Spring Data JPAでのOrderBy Spring Data JPAでエンティティクラスにfindして複数のレコードを取得する場合、OrderByをつければ並び順を変更できることはご存知でしょうか? findB…

Spring Bootで実行SQLのログを取得する方法

アプリケーション開発でのSQLログ application.ymlでの設定 アプリケーション開発でのSQLログ アプリケーションの開発をしている時、実行されたSQLのログを参照したい場面がありますよね。 想定外のSQLが実行されていないか確認したり、ボトルネックとなって…

Spring BootでEntityオブジェクトのクローンをしてみる

Entityオブジェクトのクローン クローンをしたいEntityクラスにCloneableインターフェースを実装 クローンメソッドの呼び出し Entityオブジェクトのクローン SpringBootで機能の実装をしている中で、Entityオブジェクトのクローンを作りたくなることはありま…

SpringBootでローカルjarファイルをMavenで管理

ローカルjarファイルはどんな時に使う? 設定方法 ローカルjarファイルはどんな時に使う? 普段SpringBootで外部ライブラリを使う時、Mavenの設定ファイルであるpom.xmlを使う人が多いのではないでしょうか。Mavenのリポジトリにあり、誰でもインストールし…

Spring Boot + MySQLで絵文字を保存する

絵文字を保存したい MySQLの文字コードを変更 Spring Bootでデータベース接続時の文字コードを変更 まとめ 絵文字を保存したい スマホが普及してから絵文字を文中に入れるのはもはや普通のことですよね。 掲示板などでも絵文字を入力できるものは増えていま…

Spring BootのFormクラスでIntegerの項目にNULLはPOSTできない

NULLをPOSTした時点でStringとして認識されてしまう 数値(Integer)型の項目で空の可能性がある場合 AjaxでPOSTする時の例 NULLをPOSTした時点でStringとして認識されてしまう Spring Bootにおけるフォームから値をPOSTする際の挙動になりますが、Integer型の…

NginxとTomcatでリバースプロキシ連携

なぜNginxとTomcatを連携? ポートの開放 サーバ設定 MySQLのインストール Nginxのインストールと起動 Nginxのインストール confファイルを書き換えてリバースプロキシ設定 Nginxの起動・自動起動設定 JavaとTomcatのインストールと起動 JavaとTomcatのイン…

TomcatのインストールとCATALINA_OPTSの設定

Tomcatのインストールの仕方でCATALINA_OPTSの設定方法も異なる CATALINA_OPTSを設定する場面 Tomcatのインストール方法 wgetコマンドなどでソースコードをダウンロードしてからコンパイルする方法 yumでインストールする方法 Tomcatのインストールの仕方でC…

ApacheとTomcatの連携でリダイレクトが上手くいかない

Javaで組まれたWebサイトをApacheとTomcatを連携させて動かしているのですが、 先日サイト改修により一部ページのURLも変更させた時のリダイレクト設定について苦労したのでそれについて書きます。 やりたいことは、「http://ドメイン/test/sample.html」と…

Spring Boot Devtoolsを使って自動再起動

Javaなどソースの変更をいちいちコンパイルをして確認する場合、 毎回コンパイルを手動でするのは面倒ですよね。 (慣れている人は何も感じないかもしれませんがw)Spring Bootでは自動でコンパイルをしてくれるツールがあるので、 少しは開発効率を上げるこ…