質問、希望、指摘等あればやさしくお願いします
お気軽にコメントしてください。
はじめまして。
次のプロジェクトでORM(MyBatis)を使用しそうであったことを契機に、貴著「Javaの基礎を学び終えたアナタに贈る, SpringBoot/SpringSecurityによる掲示板開発ハンズオン」を触らせていただきました(多少わかる系なので、gradle使用&VSC上のコンテナから動かしたりでやるくらいの応用は利かせたりしつつ)。
全体的によくまとまっており、いいハンズオンだったと思っております。
公開していただいてありがとうございます。
ただ一点、IDE準備中の「lombok」のプラグインについては、IntelliJのプラグインとして手動で導入の記述がありますが、現行のIntelliJ Commumityではデフォルトで含まれているため、逆にプラグインでの検索では見つからないことご指摘しておこうかと思います(2020.3.1以降。現行2021.1.1の直近でもこの状態であることを、5/25にCentOS8仮想マシン上から確認済)。
はじめまして。お読みいただきありがとうございます。
ご指摘ありがとうございました。全く存じませんでした。
ご指摘感謝いたします!
はじめまして。
Chapter5 Mybatisを使ったデータの保存、につきましてapplication.ymlのDDLファイルパスの記述が変わっていたみたいなので報告させていただきます。
spring initializrでプロジェクトを作成するときに、Spring Bootのバージョンがデフォルトだと今現在2.7.2、あしたば様の執筆当時は2.4.3です。
調べたところ2.5.0以降、記述の方法が変わってたみたいです。
---変更前---
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:develop;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
hikari:
pool-name: ConnectionPool
leakDetectionThreshold: 5000
maximum-pool-size: 20
minimum-idle: 10
username: sa
password:
driver-class-name: org.h2.Driver
schema: classpath:h2/schema.sql
initialization-mode: embedded
---変更後---
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:develop;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
hikari:
pool-name: ConnectionPool
leakDetectionThreshold: 5000
maximum-pool-size: 20
minimum-idle: 10
username: sa
password:
driver-class-name: org.h2.Driver
sql:
init:
mode: embedded
schema-locations: classpath:h2/schema.sql
変更しないと、USER_COMMENTテーブルが作れなく進めなかったので報告させてもらいました。
初めまして。
読んでいただきありがとうございます。
また、詳細にご報告ありがとうございます。助かりました。近日中に内容に反映したいと思います。
Chapter06 MyBatisを使ったデータの取得、その表示、について報告させていただきます。
この章を一通り実装し終え、実行してみると下記のエラーが出てきてしまいました。
推測になりますが、UserCommentReadDtoでデータを受け取る際にカラム名から順番に受け取るため
用意している変数の型に合ってないんじゃないかと思いました。
以下、UserCommentReadDtoのコードですが上からid, name, mailAddress, craetedAt, commentとなっています。
package chalkboard.me.bulletinboard.application.dto;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.time.LocalDateTime;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class UserCommentReadDto {
private final int id;
private final String name;
private final String mailAddress;
private final LocalDateTime createdAt;
private final String comment;
}
次にschema.sqlで定義したカラム順ですがid, name, mailAddress, comment, createdAtとなっているためエラーがでているものだと思いました。(commentをtimestamp型で受け取れない。)
UserCommentReadDtoでcreatedAtとcommentを逆にしたら問題なく表示されたのでここに報告いたします。
package chalkboard.me.bulletinboard.application.dto;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.time.LocalDateTime;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
public class UserCommentReadDto {
private final int id;
private final String name;
private final String mailAddress;
//以下二つを入れかえ
private final String comment;
private final LocalDateTime createdAt;
}
ご指摘ありがとうございます。コードの方ではおっしゃるとおりになっていたので、修正が漏れてしまったようでした。
MyBatisとDTOの間はsetter/getterをつかって名前基準のMappingを作ることもできますが、紹介している方法では設定が非常に簡易なかわりにDBカラムの順序の影響を受けたように思います。
はじめまして。
来春よりエンジニアとしてのキャリアが始まるため、実務前の教材として大変参考にさせていただいております。
公開していただいてとても感謝しております。
chapter-08のSecurityConfig実装部分について質問させていただきます。
SpringSecurity5.7以降からWebSecurityConfigurerAdapter
がdepricatedになった影響で、configure関数の書き方が変更されたようです。(ドキュメント)
SpringSecurity5.7以降のSecurityConfigについて、configure(AuthenticationManagerBuilder auth)
の関数をどのようにコーディングすべきかわからず、学習が停滞しております。
teratailのスレッドでも同様の質問を詳しく掲載させていただきました。
著者様または本コメントをご覧になった有識者が居りましたら、解決方法を教えていただきたいです。
はじめまして。ご参考いただきありがとうございます。
この本もspring boot 2.4を基準としているので随分古くなってしまいました。
nodeなどは一瞬で陳腐化しますが、javaでもこれほど変わるものかと少し驚いています。
さて、下記にSpringBoot2.7に準じて書き直したコードを置いておきます。
本の修正は少々かかりますが、、。
SpringSecurityについても修正していますのでご参考にしてください。