SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
1
What's new in Spring Boot 2.6 ?
2022/03/30
日本Springユーザ会
土岐 孝平
自己紹介
• 土岐 孝平
• 合同会社 現場指向
– Springのオンライン研修
– スポット技術支援
– メモラキー
• 書籍の執筆
2
[改訂新版]Spring入門 OpenID Connect入門
「ゼロ・トゥー・ヒーロー with Spring」
~ 5日間でゼロから即戦力へ ~
現場指向
🔍
4月開催
☆限定割引中☆
Spring Bootのリリーススケジュール
• 5月と11月にマイナーもしくはメジャーバージョンがリリースさ
れる
• 去年の11月にバージョン2.6がリリースされた
• 今年の5月に2.7がリリース予定
• 今年の11月に3.0がリリース予定
3
https://github.com/spring-projects/spring-
boot/wiki/Supported-Versions#release-schedule
2.6の変更点の確認方法
• リリースノートを確認する
– https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-
2.6-Release-Notes
• 中の人の動画を見る
– Spring Boot開発者のPhilさん
• https://tanzu.vmware.com/content/webinars/feb-1-whats-
new-in-spring-boot-2-6
– SpringアドボケイトのDanさん
• https://www.youtube.com/watch?v=4L4LEnawcO8&t=195s
• https://www.youtube.com/watch?v=2c3mNINiMTk
4
おすすめ
発表の概要
• Spring Bootの開発者Philさんの動画(ウェビナー)
の中で紹介された内容をベースに変更点を紹介。
動画を見ながら個人的に気になったことを余談で紹
介
• Philさんの動画
– https://tanzu.vmware.com/content/webinars/feb-1-
whats-new-in-spring-boot-2-6
5
紹介する変更点
• 旧バージョンから変わったこと
– 循環参照がデフォルト禁止
– Spring MVCのパスマッチングの実装が変わった
– 「info.xxx」プロパティがデフォルト無効
– recordクラスの@ConstructorBindingが不要
• 新しく追加された機能
– SameSiteクッキーの設定が可能
– Actuatorで秘密情報をサニタイズするIFが追加された
– @AutoConfigureMockMvcでWebTestClientが利用可
能
– infoエンドポイントでJava実行環境の情報を取得可能
– 起動時間のメトリクスが取得可能 6
旧バージョンから変わったこと
• 循環参照がデフォルト禁止
• Spring MVCのパスマッチングの実装が変わった
• 「info.xxx」プロパティがデフォルト無効
• recordクラスの@ConstructorBindingが不要
7
循環参照がデフォルト禁止
• 循環参照とは?
– オブジェクト同士が循環して参照すること
• プログラム修正時の影響範囲が特定しにくいため、
一般的に「よろしくない」とされる
8
A B
A B
C
2.5までの挙動
• フィールドインジェクション、セッターインジェクションであれば
、Bean間で循環参照が可能
• コンストラクタインジェクションは循環参照が不可(例外が発
生する)
– Aをnewするには事前にBが必要だが、Bをnewするためには事前に
Aが必要、という不可能な状態になるため
9
A B
Spring
③インジェクション ④インジェクション
①new ②new
A B
Spring ②new&インジェクション
①new&インジェクション
2.6の挙動
• フィールドインジェクション、セッターインジェクションもデフォ
ルトで循環参照が不可
– ただし、設定で可能にすることができる
• 「spring.main.allow-circular-references=true」
• コンストラクタインジェクションもこれまでどおり不可
– 「spring.main.allow-circular-references=true」も効かない
10
A B
Spring
③インジェクション ④インジェクション
①new ②new
A B
Spring ②new&インジェクション
①new&インジェクション
余談:コンストラクタインジェクションが奨励の訳
• ただし、理由は記載されていない
• 一般的と思われる見解
– うっかり循環参照になるのを防ぐ(今回の変更でアドバン
テージが無くなった)
– 変更不可にできる(フィールドにfinalが付けれる)
11
出典:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
余談のつづき:動画の中のコメント
• コンストラクタが呼び出された時点で依存オブジェクトが全て
揃うので、初期処理のときに@PostConstruct等を使わなく
てもいいのでクリーン(土岐訳)
12
@Service
public class FooService {
@Autowired
private FooDao fooDao;
public FooService() {
}
@PostConstruct
public void init() {
fooDao.doSomething();
}
・・・
@Service
public class FooService {
private final FooDao fooDao;
public FooService(FooDao fooDao) {
this.fooDao = fooDao;
init();
}
public void init() {
fooDao.doSomething();
}
・・・
旧バージョンから変わったこと
• 循環参照がデフォルト禁止
• Spring MVCのパスマッチングの実装が変わった
• 「info.xxx」プロパティがデフォルト無効
• recordクラスの@ConstructorBindingが不要
13
Spring MVCのパスマッチングの実装が変わった
• パスマッチングがでてくる箇所
– Spring MVC
• @GetMapping("/foo"), @PostMapping("/foo"), ...
– Spring Security
• mvcMatchers("/foo")
• AntPathMatcherから、PathPatternParserに変わっ
た
– 基本的には性能改善が目的の様子
– 使い方はほぼ同じだが、違いもある
– 設定で元に戻すことも可能
• 「spring.mvc.pathmatch.matching-strategy=ant-
path-matcher」
14
AntPathMatcherとPathPatternParserの違い
• パスの途中の「**」が利用不可に(起動時にエラー)
• 同じ名前のパス変数が不可に(起動時にエラー)
15
@GetMapping("/foo/**/bar")
public String foobar() {
return "Foo Bar!";
}
@GetMapping("/hello/{name}/{name}")
public String hello(@PathVariable String name) {
return "Hello " + name;
}
旧バージョンだと、2つ目の{name}の値が
引数のnameに入る
Spring Securityでの注意点
• 先頭の「/」を厳密にマッチさせるようになった
• 「/admin/secret」にアクセスがあった場合、has
Authority("ADMIN")の権限チェックが行われない
– その下のpermitAll()になってしまう
• 権限チェックが行われるようにするには、「
.mvcMatchers("/admin/secret")」にする必要がある
16
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests()
.mvcMatchers("admin/secret").hasAuthority("ADMIN")
.anyRequest().permitAll();
}
旧バージョンから変わったこと
• 循環参照がデフォルト禁止
• Spring MVCのパスマッチングの実装が変わった
• 「info.xxx」プロパティがデフォルト無効
• recordクラスの@ConstructorBindingが不要
17
「info.xxx」プロパティがデフォルト無効
• 「info.xxx」プロパティとは?
– 「info.xxx=yyy」指定すると、Actuatorのinfoエンドポイント
で「xxx: "yyy"」が取得できる
– セキュリティ的な理由でデフォルトが無効となった様子
• この機能を知らずにうっかりActuatorで公開してしまう
など
– 有効にするには以下を設定
• management.info.env.enabled=true
18
info.aaa=11111
info.bbb=22222
application.properties
{"aaa":"111111111",
"bbb":"222222222"}
/actuator/info
余談:infoエンドポイントで動的な値を取得する
• InfoContributorを実装してBeanに登録するだけ
19
@Component
public class FooInfoContributor implements InfoContributor {
@Override
public void contribute(Builder builder) {
builder.withDetail("foo", LocalDateTime.now());
}
}
{"foo":"2022-03-20T10:10:08.3491234"}
/actuator/info
旧バージョンから変わったこと
• 循環参照がデフォルト禁止
• Spring MVCのパスマッチングの実装が変わった
• 「info.xxx」プロパティがデフォルト無効
• recordクラスの@ConstructorBindingが不要
20
recordクラスの@ConstructorBindingが不要
• recordクラスとは?
– Java 16から追加された言語仕様
– コンストラクタ、Getter、toString、equals、hashCodeが
自動生成される
21
public record FooProps(String abc, String def) {
}
FooRecord fooProps = new FooProps("xxx", "yyy");
System.out.println(fooProps.abc() + ":" + fooProps.def());
// 「xxx : yyy」が出力される
public record FooProps(String abc, String def) {
public String concat() {
return this.abc + this.def;
}
}
メソッドも作れる。
※フィールドはfinalなので変
更不可
コンストラクタやGetterが
自動生成されている
recordクラスの@ConstructorBindingが不要
• @ConfigurationPropertiesでrecordクラスにプロパ
ティを格納する際@ConstructorBindingが不要
– ※ただし、コンストラクタを複数定義した場合は必要
22
@ConfigurationProperties(prefix = "foo")
@ConstructorBinding
public record FooProps(String abc, String def) {
}
@ConfigurationProperties(prefix = "foo")
public record FooProps(String abc, String def) {
}
recordではない通常のクラスの場合は
@ConstructorBindingが必要
(理由は不明)
foo.abc=xxx
foo.def=yyy
不要になった
余談:recordクラスのアクセサーのJavadoc
• Javadocを簡単に記述する方法が無さそうなのが残
念
– アクセサーをオーバーライドしてJavadocを書かないとい
けない様子
23
public record FooProps(String abc, String def) {
/**
* ABCを返す
* @return
*/
public String abc() {
return this.abc;
}
}
これは避けたい
新しく追加された機能
• SameSiteクッキーの設定が可能
• Actuatorで秘密情報をサニタイズするIFが追加され
た
• @AutoConfigureMockMvcでWebTestClientが利
用可能
• infoエンドポイントでJava実行環境の情報を取得可
能
• 起動時間のメトリクスが取得可能
24
SameSiteクッキーの設定が可能
• SameSiteクッキーとは?
– 外部のサイトの画面からアクセスされた際、送信を制限
するクッキーの属性
25
外部のサイト
<html>
<img src="www.me.com/foo">
</html>
www.other.com www.me.com
自分のサイト
www.me.comのクッキー(セッションIDな
ど)を送信するか?
ネットワーク負荷や、CSRFのリスクを加
味すると、不要であれば送信しない方が
よい
ブラウザ
SameSiteの属性値の種類
• Strict
– 送信しない
• None
– 送信する
• Lax
– リンクなどユーザのアクションでアクセスされたときだけ送
信する
26
<html>
<img src="www.me.com/foo">
<a href=" www.me.com/foo">リンク</a>
</html>
リンクで辿った場合は送信
www.other.comの画面
こっちは送
信しない
Spring Bootで設定可能
• セッションIDの場合
– server.servlet.session.cookie.same-site=lax
• それ以外の場合
– 新しく追加されたCookieSameSiteSupplierを使用する
27
@Bean
public CookieSameSiteSupplier cookieSameSiteSupplier() {
return CookieSameSiteSupplier.ofLax()
.whenHasNameMatching("myapp.*");
}
@GetMapping("/cookie")
public String foo(HttpServletResponse res) {
res.addCookie(new Cookie("myapp_abc", "pppppppp"));
return "foo";
}
Java標準だとSameSiteを
設定するメソッドが無い
Spring Bootが上手いこと
設定してくれる
Set-Cookie: JSESSIONID=xxx; Path=/; HttpOnly; SameSite=Lax
新しく追加された機能
• SameSiteクッキーの設定が可能
• Actuatorで秘密情報をサニタイズするIFが追加さ
れた
• @AutoConfigureMockMvcでWebTestClientが利
用可能
• infoエンドポイントでJava実行環境の情報を取得可
能
• 起動時間のメトリクスが取得可能
28
Actuatorのサニタイズ
• Actuatorには、envエンドポイントとconfigpropsエン
ドポイントで、秘密と思われるプロパティの値をサニ
タイズしてくれる
29
/actuator/env
some.secret=secret123
some.key=key123
some.maskme.value=hideme123
management.endpoint.env.additional-keys-to-sanitize=.*hideme.*
application.properties
Actuatorのサニタイズに対する要望
• プロパティの取得元(PropertySource)毎にマスクし
たいという要望があった
– https://github.com/spring-projects/spring-
boot/issues/6587
30
秘密A=secretA
秘密B=secretB
秘密C=secretC
secret.properties
/actuator/env
情報A: aaa
情報B: bbb
情報C: ccc
秘密A: ******
秘密B: ******
秘密C: ******
情報A=aaa
情報B=bbb
情報C=ccc
nosecret.properties
プロパティ名を問わず全
てサニタイズしたい
SanitizingFunctionインタフェース
• SanitizingFunctionインタフェースが追加された
– プロパティの取得元(PropertySource)に対してマスクす
ることが可能
31
@Bean
public SanitizingFunction sanitizingFunction() {
return new SanitizingFunction() {
@Override
public SanitizableData apply(SanitizableData data) {
if (data.getPropertySource().getName().contains("secret.properties")) {
return data.withValue("******");
} else {
return data;
}
}
};
}
秘密情報を保持した取得元のプロパティを
すべてマスクできる
新しく追加された機能
• SameSiteクッキーの設定が可能
• Actuatorで秘密情報をサニタイズするIFが追加され
た
• @AutoConfigureMockMvcでWebTestClientが
利用可能
• infoエンドポイントでJava実行環境の情報を取得可
能
• 起動時間のメトリクスが取得可能
32
@AutoConfigureMockMvcでWebTestClientが利用可能に
• これまでのWebのテスト
33
@WebMvcTest(controllers = FooController.class)
public class FooControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void foo() throws Exception {
mockMvc.perform(get("/foo"))
.andExpect(status().isOk());
}
}
@SpringBootTest(webEnvironment =
WebEnvironment.RANDOM_PORT)
public class FooIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
@Test
public void foo() {
ResponseEntity<String> entity =
restTemplate.getForEntity("/foo", String.class);
assertThat(entity.getStatusCode())
.isEqualTo(HttpStatus.OK);
}
}
テストメソッドの書き方が
変わってしまう(開発者の
学習コストが増える)
【Controllerの単体テスト】
【APサーバ起動した結合テスト】
@AutoConfigureMockMvcでWebTestClientが利用可能に
34
@WebMvcTest(controllers = FooController.class)
public class FooControllerTest {
@Autowired
private WebTestClient client;
@Test
public void foo() {
client.get().uri("/foo").exchange()
.expectStatus().isOk();
}
}
@SpringBootTest(webEnvironment =
WebEnvironment.RANDOM_PORT)
public class FooIntegrationTest {
@Autowired
private WebTestClient client;
@Test
public void foo() {
client.get().uri("/foo").exchange()
.expectStatus().isOk();
}
}
@WebMvcTestの中の
@AutoConfigureMockMvcによって
WebTestClientがコンフィグレーションされる
テストメソッドを同じ書
き方で記述できる(開発
者の学習コストが減る)
• 可能になった書き方
【注意】裏でWebClientが使うため
「spring-boot-starter-webflux」の依存が必要
【Controllerの単体テスト】
【APサーバ起動した結合テスト】
新しく追加された機能
• SameSiteクッキーの設定が可能
• Actuatorで秘密情報をサニタイズするIFが追加され
た
• @AutoConfigureMockMvcでWebTestClientが利
用可能
• infoエンドポイントでJava実行環境の情報を取得可
能
• 起動時間のメトリクスが取得可能
35
infoエンドポイントでJava実行環境の情報を取得可能に
• management.info.java.enabled=true
36
余談:FireFoxから移植された
クロームのアドオン
「JSON Viewer」を使用した画
面。値が縦に揃って見やすい
新しく追加された機能
• SameSiteクッキーの設定が可能
• Actuatorで秘密情報をサニタイズするIFが追加され
た
• @AutoConfigureMockMvcでWebTestClientが利
用可能
• infoエンドポイントでJava実行環境の情報を取得可
能
• 起動時間のメトリクスが取得可能
37
起動時間のメトリクスが取得可能に
• Actuatorの「/actuator/metrics」エンドポイントで以
下のメトリクスが利用可能になった
– application.started.time
• DIコンテナが起動した後、ApplicationRunner・
CommandLineRunnerを実行する「前」までの時間
– application.ready.time
• アプリケーションが利用可能になるまでの時間
38
余談:動画を見ていて思ったこ
と
39
余談:Spring initializrの「EXPLORE」の活用
• 例えば「h2のライブラリを追加したいけど、アーティファクトID
ってなんだっけ?」というときに便利(ネットで検索するより楽)
40
https://start.spring.io
該当箇所をコピペ
余談:spring.config.importが便利そう
• spring.config.importとは?
– 別の場所で設定されたプロパティをインポートできるプロ
パティ(バージョン2.4からの機能)
• 「optional:」でオプション扱い、「file:」でファイルシス
テムから読み込める(「file:」を指定しなければクラス
パスから読み込む)
41
spring.config.import=foo.properties some.prop=abc
application.properties foo.properties
spring.config.import=optional:file:foo.properties
余談:spring.config.importが便利そう
• 利用のアイデア
– 実行環境に用意した秘密情報のプロパティファイルを読
込んでデフォルトを上書き
– 開発者がローカルで自由に記述できるプロパティファイル
を読込む
42
some.secret.aaa=for_local
some.secret.bbb=for_local
some.secret.ccc=for_local
spring.config.import=optional:file:secret.properties
spring.config.import=optional:developer.properties
application.properties
some.prop=・・・
ローカルのdeveloper.properties
.gitignoreなどでSCMに登
録しないようにする
some.secret.aaa=aaa123
some.secret.bbb=bbb123
some.secret.ccc=ccc123
本番環境のsecret.properties
application.properties
余談:utilパッケージのXxxUtilsクラスが便利そう
• StringUtilsクラス
– capitalizeメソッド
• 文字列の先頭を大文字にする
– uncapitalizeメソッド
• 文字列の先頭を小文字にする
• ReflectionUtilsクラス
– findMethodメソッド
• 指定したClassとメソッド名でMethodオブジェクトを返
す。親クラスも辿ってくれる
43
余談:XxxUtilsクラスはabstractになってる
44
• インスタンス化を防ぐためと思われる
45
ご清聴ありがとうございました
46
ライセンスについて
• JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを元にした派生
作品)の複製・頒布・表示・上演を認めます。
• 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。
• 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。

Mais conteúdo relacionado

Mais procurados

WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
You_Kinjoh
 

Mais procurados (20)

例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web ServiceアプリケーションAngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
 

Semelhante a What's new in Spring Boot 2.6 ?

Play2の裏側
Play2の裏側Play2の裏側
Play2の裏側
masahitojp
 

Semelhante a What's new in Spring Boot 2.6 ? (20)

EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
 
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法についてDart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
Dart のコード自動生成の仕組みと、コード自動生成のパッケージを自作する方法について
 
Roslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインRoslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドイン
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
Xamarinでも有能な .NET Core
 Xamarinでも有能な .NET Core  Xamarinでも有能な .NET Core
Xamarinでも有能な .NET Core
 
2017年春のPerl
2017年春のPerl2017年春のPerl
2017年春のPerl
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
ES6 in Practice
ES6 in PracticeES6 in Practice
ES6 in Practice
 
Python32 pyhackathon-201011
Python32 pyhackathon-201011Python32 pyhackathon-201011
Python32 pyhackathon-201011
 
Modulemaking
ModulemakingModulemaking
Modulemaking
 
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
Play2の裏側
Play2の裏側Play2の裏側
Play2の裏側
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
ES6,7で書ける JavaScript
ES6,7で書ける JavaScriptES6,7で書ける JavaScript
ES6,7で書ける JavaScript
 

Mais de 土岐 孝平

試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
土岐 孝平
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
 

Mais de 土岐 孝平 (15)

SpringベースのCloud Native Application
SpringベースのCloud Native ApplicationSpringベースのCloud Native Application
SpringベースのCloud Native Application
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
 
Microserviceの今どきのインフラを探る
Microserviceの今どきのインフラを探るMicroserviceの今どきのインフラを探る
Microserviceの今どきのインフラを探る
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
Springを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしようSpringを使ったwebアプリにリファクタリングしよう
Springを使ったwebアプリにリファクタリングしよう
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
業務システムとマイクロサービス
業務システムとマイクロサービス業務システムとマイクロサービス
業務システムとマイクロサービス
 
エッセンシャルCore springハンズオン
エッセンシャルCore springハンズオンエッセンシャルCore springハンズオン
エッセンシャルCore springハンズオン
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
 
vFabricを触ろう
vFabricを触ろうvFabricを触ろう
vFabricを触ろう
 

What's new in Spring Boot 2.6 ?