SlideShare a Scribd company logo
1 of 51
Download to read offline
8IBU`T/FXJO
4QSJOH#PPU
+46(ษ‫ڧ‬ձ
஑୩ɹஐߦ
w೔ຊ4QSJOHϢʔβձ	+46(
ελοϑ
w๭4*FSͰιϑτ΢ΣΞΞʔΩςΫτ

ʢ࣮ଶ͸؅ཧ‫ۀ‬຿ଟΊɾɾɾʣ

w๭ॻͷචऀͷҰਓ
ࣗ‫঺ݾ‬հ
IUUQTXXXTIPFJTIBDPKQCPPLEFUBJM
7.8BSFຘ͞ΜͷߨԋࢿྉΛࢀর
ࢀߟɿա‫ڈ‬ͷ8IBU`T/FXγϦʔζ

IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOE
F1659)X'R0
%8@OQ33RT1US'S7O;IPDGR0-H'L
FEJUTMJEFJEHD@@
IUUQTEPDTHPPHMFDPNQSFTFOUBUJPOE
S1.'QU+N6)/SE5Y;1S#PFDC8D
B(VKG7J#1FEJUTMJEFJEQ
w ϥΠϑαΠΫϧ౳
w ৽‫ػ‬ೳʗվળ
w ‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w υΩϡϝϯτվળ
ΞδΣϯμ

IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4QSJOH#PPU3FMFBTF/PUFT
w 4QSJOH#PPU͔Β͸൒೥̍ճස౓ͰϦϦʔεʢ+%,ͱରԠʣ
w 4QSJOH#PPUͷ0-͸݄
ϥΠϑαΠΫϧ
Version Released Expected End of
Life
ґଘSpring
Framework
ґଘSpring
Cloud
ରԠJavaό
ʔδϣϯ
2.5.x May 2021 February 2023 5.3 2020.0.3 16ʙ8
2.4.x November 2020 August 2022 5.3 2020.0.3

2020.0.0
15ʙ8
2.3.x May 2020 February 2022 5.2 Hoxton.SR11 14ʙ8
2.2.x October 2019 July 2021 5.2 Hoxton.SR11 13ʙ8
IUUQTTUBSUTQSJOHJPBDUVBUPSJOGP
IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4VQQPSUFE7FSTJPOTSFMFBTFEWFSTJPOT
044ͱͯ͠ͷக໋తόά΍੬ऑੑ΁ͷαϙʔτͷϙϦγ

ʢॏཁͳ࿩ͳͷͰɺਖ਼ࣜʹ͸ެࣜ63-Ͱ֬ೝΛʣ
w ϝδϟʔόʔδϣϯ͸ϦϦʔε͔Β࠷௿೥͸αϙʔτ͞ΕΔ
ʢͨͩ͠αϙʔτର৅ͷϚΠφʔόʔδϣϯͰ͋Δඞཁʣ
w ϚΠφʔόʔδϣϯ͸࠷௿ϲ݄͸αϙʔτ͞ΕΔ
w 0-͸ϦϦʔεΑΓϲ݄
ࢀߟɿ4QSJOH#PPUͷ044αϙʔτϙϦγ
IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4VQQPSUFE7FSTJPOTTQSJOHCPPUTVQQPSUQPMJDZ
w ϥΠϑαΠΫϧ౳
w ৽‫ػ‬ೳʗվળ
w ‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w υΩϡϝϯτվળ
ΞδΣϯμ

IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4QSJOH#PPU3FMFBTF/PUFT
w ‫ڥ؀‬ม਺ͷϓϨϑΟοΫε
w 4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ
w %BUB4PVSDF#FBOͷੜ੒ॱংͷվળ
w 3%#$Ͱͷσʔλιʔεॳ‫ظ‬Խ
w ͦͷଞ
4QSJOH#PPU৽‫ػ‬ೳʗվળ
͜Ε·ͰɺಉҰ‫ڥ؀‬ʢಉҰίϯςφ౳ʣͰෳ਺4QSJOH#PPUΛ‫ى‬ಈ
͢Δ৔߹ɺ4QSJOH#PPU༻‫ڥ؀‬ม਺͕‫͍ͨͯͬ·ͯ͠͠߹ڝ‬ɻ
‫ڥ؀‬ม਺ͷϓϨϑΟοΫε

$export SERVER_PORT=8090
$export FUGA_SERVER_PORT=8091
$java -jar hoge.jar
…
$java -jar fuga.jar --server.port=$FUGA_SERVER_PORT
…
ઃఆͷ૿‫ݮ‬ͷ࣌ɺ͍͍ͪͪ
Ϛοϐϯά͕໘౗
‫ڥ؀‬ม਺΁ͷ֎ग़͠͸
࠷ۙͰ͸.VTU
৽‫ػ‬ೳʗվળ
Y
ΞϓϦέʔγϣϯຖʹϓϨϑΟοΫεΛઃఆՄೳʹͳΓɺ‫߹ڝ‬Λආ
͚Δ͜ͱ͕Մೳɻ
‫ڥ؀‬ม਺ͷϓϨϑΟοΫε

$export SERVER_PORT=8090
$export FUGA_SERVER_PORT=8091
$java -jar hoge.jar
…
$java -jar fuga.jar
…
কདྷɺΧελϜ͍ͨ͠ม਺
͕૿͑ͯ΋҆৺
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.setEnvironmentPrefix(fuga);
application.run(args);
} ‫ڥ؀‬ม਺ͷϓϨϑΟοΫε
Λࢦఆ
ϓϨϑΟοΫε෇͖ͷ
‫ڥ؀‬ม਺Λఆٛ
৽‫ػ‬ೳʗվળ
Y
w ‫ڥ؀‬ม਺ͷϓϨϑΟοΫε
w 4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ
w %BUB4PVSDF#FBOͷੜ੒ॱংͷվળ
w 3%#$Ͱͷσʔλιʔεॳ‫ظ‬Խ
w ͦͷଞ
4QSJOH#PPU৽‫ػ‬ೳʗվળ
4QSJOH%BUB3FQPTJUPSZͷར༻࣮੷͕ɺDUVBUPSͷNFUSJDTΤϯ
υϙΠϯτ΍.JDSPNFUFSʹެ։Ͱ͖ΔΑ͏ʹͳͬͨɻ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

{
name: spring.data.repository.invocations,
description: null,
baseUnit: seconds,
measurements: [
{
statistic: COUNT,
value: 4
},
{
statistic: TOTAL_TIME,
value: 0.216646629
},
{
statistic: MAX,
value: 0.211294863
}
],
availableTags: [
{
tag: exception,
values: [None]
},
{
tag: method,
values: [findAll]
},
{
tag: state,
values: [SUCCESS]
},
{
tag: repository,
values: [TodoRepository]
}]}
IUUQMPDBMIPTUBDUVBUPSNFUSJDTTQSJOHEBUBSFQPTJUPSZJOWPDBUJPOT
.FUSJDTΤϯυϙΠϯτͷྫ
৽‫ػ‬ೳʗվળ
4QSJOH%BUB3FQPTJUPSZͷར༻࣮੷͕ɺDUVBUPSͷNFUSJDTΤϯ
υϙΠϯτ΍.JDSPNFUFSʹެ։Ͱ͖ΔΑ͏ʹͳͬͨɻ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

{
name: spring.data.repository.invocations,
description: null,
baseUnit: seconds,
measurements: [
{
statistic: COUNT,
value: 4
},
{
statistic: TOTAL_TIME,
value: 0.216646629
},
{
statistic: MAX,
value: 0.211294863
}
],
availableTags: [
{
tag: exception,
values: [None]
},
{
tag: method,
values: [findAll]
},
{
tag: state,
values: [SUCCESS]
},
{
tag: repository,
values: [TodoRepository]
}]}
IUUQMPDBMIPTUBDUVBUPSNFUSJDTTQSJOHEBUBSFQPTJUPSZJOWPDBUJPOT
.FUSJDTΤϯυϙΠϯτͷྫ
‫ͼݺ‬ग़͠ճ਺
૯ॴ༻࣌ؒ
࠷େॴ༻࣌ؒ
ϝιου໊
ൃੜྫ֎
࣮ߦ݁Ռঢ়ଶ
ର৅ϦϙδτϦ
৽‫ػ‬ೳʗվળ
4QSJOH%BUB3FQPTJUPSZͷར༻࣮੷͕ɺDUVBUPSͷNFUSJDTΤϯ
υϙΠϯτ΍.JDSPNFUFSʹެ։Ͱ͖ΔΑ͏ʹͳͬͨɻ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

1SPNFUFVTग़ྗͷྫ
# HELP spring_data_repository_invocations_seconds_max
# TYPE spring_data_repository_invocations_seconds_max gauge
spring_data_repository_invocations_seconds_max{exception=None,method=fi
ndAll,repository=TodoRepository,state=SUCCESS,} 0.111220909
# HELP spring_data_repository_invocations_seconds
# TYPE spring_data_repository_invocations_seconds summary
spring_data_repository_invocations_seconds_count{exception=None,method=
findAll,repository=TodoRepository,state=SUCCESS,} 1.0
spring_data_repository_invocations_seconds_sum{exception=None,method=fi
ndAll,repository=TodoRepository,state=SUCCESS,} 0.111220909
IUUQMPDBMIPTUBDUVBUPSQSPNFUIFVT
৽‫ػ‬ೳʗվળ
4QSJOH%BUB3FQPTJUPSZͷར༻࣮੷͕ɺDUVBUPSͷNFUSJDTΤϯ
υϙΠϯτ΍.JDSPNFUFSʹެ։Ͱ͖ΔΑ͏ʹͳͬͨɻ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

1SPNFUFVTग़ྗͷྫ
# HELP spring_data_repository_invocations_seconds_max
# TYPE spring_data_repository_invocations_seconds_max gauge
spring_data_repository_invocations_seconds_max{exception=None,method=fi
ndAll,repository=TodoRepository,state=SUCCESS,} 0.111220909
# HELP spring_data_repository_invocations_seconds
# TYPE spring_data_repository_invocations_seconds summary
spring_data_repository_invocations_seconds_count{exception=None,method=
findAll,repository=TodoRepository,state=SUCCESS,} 1.0
spring_data_repository_invocations_seconds_sum{exception=None,method=fi
ndAll,repository=TodoRepository,state=SUCCESS,} 0.111220909
IUUQMPDBMIPTUBDUVBUPSQSPNFUIFVT
ͲͷςʔϒϧʹͲͷ͘Β͍ΞΫηε͍ͯ͠Δ͔ɺॴཁ࣌ؒ͸Ͳͷ͘
Β͍͔͕೺ѲͰ͖Δ
ˣ
͏·͘Ճ޻ɾՄࢹԽ͢Ε͹ੑೳνϡʔχϯάͰ‫
͏͖ͦͰ༻׆‬
ʢࠓճ͸ؒʹ߹ΘͣՄࢹԽ͸লུʣ
৽‫ػ‬ೳʗվળ
खॱ̍ɿDUVBUPSͷઃఆΛมߋ͠ɺNFUSJDTΤϯυϙΠϯτ΍
1SPNFUIFVTͷެ։ઃఆΛߦ͏ɻ
खॱ̎ɿNJDSPNFUFSSFHJTUSZQSPNFUIFVTͷ௥Ճ

ʢ1SPNFUIFVTग़ྗͷ৔߹ʣ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

management.endpoints.web.exposure.include=health,info,metrics,prometheus
BQQMJDBUJPOQSPQFSUJFT
dependency
groupIdio.micrometer/groupId
artifactIdmicrometer-registry-prometheus/artifactId
scoperuntime/scope
/dependency
QPNYNM
৽‫ػ‬ೳʗվળ
खॱ̏ɿ4QSJOH%BUB3FQPTJUPSZΛར༻͢Δɻ

ॳճΞΫηεҎ߱ʹ‫ه‬࿥͕։࢝͞ΕΔɻ
4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ

@GetMapping(todo/selectall)
@Transactional(readOnly = true)
public ListTodo selectAll() {
ListTodo todoList = new ArrayList();
todoRepository.findAll().iterator().forEachRemaining(todoList::add);
return todoList;
}
public interface TodoRepository extends CrudRepositoryTodo, String {
}
৽‫ػ‬ೳʗվળ
w ‫ڥ؀‬ม਺ͷϓϨϑΟοΫε
w 4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ
w %BUB4PVSDF#FBOͷੜ੒ॱংͷվળ
w 3%#$Ͱͷσʔλιʔεॳ‫ظ‬Խ
w ͦͷଞ
4QSJOH#PPU৽‫ػ‬ೳʗվળ
͜Ε·Ͱ͸ɺ%BUB4PVSDFʹؔ࿈͢Δ#FBOͷੜ੒ॱং੍͕‫͞ޚ‬Ε
͓ͯΒͣɺ॥‫؀‬ґଘΤϥʔ͕ൃੜ͢Δέʔε͕͋ͬͨɻ
%BUB4PVSDF#FBOͷੜ੒ॱংͷվળ

@Bean
public DataSource dataSource1(DataSourceProperties properties) {
…
}
@Bean
public DataSource dataSource2(DataSourceProperties properties) {
…
}
@Bean
@Primary
public AbstractRoutingDataSource routingDataSource(
@Qualifier(dataSource1) DataSource dataSource1,
@Qualifier(dataSource2) DataSource dataSource2) {
…
}
৽‫ػ‬ೳʗվળ
͜Ε·Ͱ͸ɺ%BUB4PVSDFΛར༻͢Δ#FBOੜ੒ॱং੍͕‫͞ޚ‬Εͯ
͓Βͣɺ॥‫؀‬ґଘΤϥʔ͕ൃੜ͢Δέʔε͕͋ͬͨɻ
%BUB4PVSDF#FBOͷੜ੒ॱংͷվળ

@Bean
public DataSource dataSource1(DataSourceProperties properties) {
…
}
@Bean
public DataSource dataSource2(DataSourceProperties properties) {
…
}
@Bean
@Primary
public AbstractRoutingDataSource routingDataSource(
@Qualifier(dataSource1) DataSource dataSource1,
@Qualifier(dataSource2) DataSource dataSource2) {
…
}
॥‫؀‬ґଘΤϥʔ͕ൃੜ
Y
৽‫ػ‬ೳʗվળ
શ͘ಉ͡ίʔυͰ΋ɺ4QSJOH#PPUYͰ͸॥‫؀‬ΤϥʔͱͳΒͣ
ਖ਼ৗʹ‫ى‬ಈ͢Δɻ
%BUB4PVSDF#FBOͷੜ੒ॱংͷվળ

@Bean
public DataSource dataSource1(DataSourceProperties properties) {
…
}
@Bean
public DataSource dataSource2(DataSourceProperties properties) {
…
}
@Bean
@Primary
public AbstractRoutingDataSource routingDataSource(
@Qualifier(dataSource1) DataSource dataSource1,
@Qualifier(dataSource2) DataSource dataSource2) {
…
}
Τϥʔͳ͘ਖ਼ৗ‫ى‬ಈ
Y
IUUQTEPDTTQSJOHJPTQSJOHCPPUEPDTSFGFSFODFIUNMIPXUPIUNMIPXUPEBUBJOJUJBMJ[BUJPOEFQFOEFODJFTEFQFOETPO
JOJUJBMJ[BUJPOEFUFDUJPO
৽‫ػ‬ೳʗվળ
w ‫ڥ؀‬ม਺ͷϓϨϑΟοΫε
w 4QSJOH%BUB3FQPTJUPSZͷϝτϦΫεެ։ରԠ
w %BUB4PVSDF#FBOͷੜ੒ॱংͷվળ
w 3%#$Ͱͷσʔλιʔεॳ‫ظ‬Խ
w ͦͷଞ
4QSJOH#PPU৽‫ػ‬ೳʗվળ
͜Ε·Ͱɺ3%#$σʔλιʔεʢ$POOFDUJPO'BDUPSZʣͰ͸%#
ॳ‫ظ‬Խ‫ػ‬ೳʢTDIFNBTRMEBUBTRMʣ͕ར༻Ͱ͖ͣɺҎԼ࣮૷͕ඞ
ཁ͕ͩͬͨɺY͔Β࣮૷͕ෆཁͱͳͬͨɻ
σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷ3%#$ରԠ

// 2.5.x ͔Β͸࣮૷ෆཁʹͳͬͨ
@Configuration(proxyBeanMethods = false)
static class DatabaseInitializationConfiguration {
@Autowired
void initializeDatabase(ConnectionFactory connectionFactory) {
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource[] scripts = new Resource[] { resourceLoader.getResource(classpath:schema.sql),
resourceLoader.getResource(classpath:data.sql) };
new ResourceDatabasePopulator(scripts).populate(connectionFactory).block();
}
}
Y
IUUQTEPDTTQSJOHJPTQSJOHCPPUEPDTSFGFSFODFIUNMTJOHMFIPXUPJOJUJBMJ[FBEBUBCBTFVTJOHSECD
৽‫ػ‬ೳʗվળ
w %PDLFS*NBHF#VJMEJOH4VQQPSUʢຘ͞ΜϋϯζΦϯʹͯ঺հʣ
w $VTUPN#VJMEQBDLT
w ϘϦϡʔϜͷCJOEJOH
w ࣮ߦՄೳ8BSͷ%PDLFS*NBHFαϙʔτ
w -BZFSFE8BST
w )551PWFS5$1	ID

w 0QFO.FUSJDTGPS1SPNFUIFVT
w 8FC'MVYͰͷ!5JNFE
w .POHP%#.FUSJDT
w -JRVJCBTF%BUB4PVSDF
w (5SFRVFTUTUPBDUVBUPSTUBSUVQ
w DUVBUPSOEQPJOUGPS2VBSU[
ͦͷଞ

৽‫ػ‬ೳʗվળ
IUUQTTQSJOHCPPUDOCIPMBQQTQDGPOFJP
IUUQTTQSJOHCPPUDOCIPMBQQTQDGPOFJP
IUUQTTQSJOHCPPUDOCIPMBQQTQDGPOFJP
IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4QSJOH#PPU3FMFBTF/PUFT
w ϥΠϑαΠΫϧ౳
w ৽‫ػ‬ೳʗվળ
w ‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w υΩϡϝϯτվળ
ΞδΣϯμ

IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUXJLJ4QSJOH#PPU3FMFBTF/PUFT
w σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ
w σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬
w %FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ
w CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ
w SSPS$POUSPMMFSͷHFUSSPS1BUI	
ͷഇࢭ
w ͦͷଞ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4DSJQUͰͷ%#ॳ‫ظ‬Խ‫ػ‬ೳʢTDIFNBTRMEBUBTRMʣͷ಺෦ߏ଄ͷ
มߋ͕͋ΓɺϓϩύςΟ͕มߋʹͳ͍ͬͯΔɻ
σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ

YҎલʢY͔Βඇਪ঑ʣ YҎ߱ આ໌
TQSJOHEBUBTPVSDFJOJUJBMJ[BUJPONPEF
TQSJOHTRMJOJUFOBCMFE	

TQSJOHTRMJOJUNPEF
%#ॳ‫ظ‬Խ‫ػ‬ೳΛ࡞ಈͤ͞Δ৚݅
TQSJOHEBUBTPVSDFQMBUGPSN TQSJOHTRMJOJUQMBUGPSN
EBUBTRMɺTDIFNBTRMͷ෦෼ͷ
ࢦఆ
TQSJOHEBUBTPVSDFTDIFNB TQSJOHTRMJOJUTDIFNBMPDBUJPOT TDIFNBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFTDIFNBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF TDIFNBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFTDIFNBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE TDIFNBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFEBUB TQSJOHTRMJOJUEBUBMPDBUJPOT EBUBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFEBUBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF EBUBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFEBUBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE EBUBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFDPOUJOVFPOFSSPS TQSJOHTRMJOJUDPOUJOVFPOFSSPS
4DSJQU్தͰΤϥʔ͕‫ܧʹ͖࣌ͨى‬
ଓ͢Δ͔
TQSJOHEBUBTPVSDFTFQBSBUPS TQSJOHTRMJOJUTFQBSBUPS 4DSJQUͷ۠੾Γจࣈ
TQSJOHEBUBTPVSDFTRMTDSJQUFODPEJOH TQSJOHTRMJOJUFODPEJOH 4DSJQUͷจࣈΤϯίʔσΟϯά
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4DSJQUͰͷ%#ॳ‫ظ‬Խ‫ػ‬ೳʢTDIFNBTRMEBUBTRMʣͷ಺෦ߏ଄ͷ
มߋ͕͋ΓɺϓϩύςΟ͕มߋʹͳ͍ͬͯΔɻ
σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ

YҎલʢY͔Βඇਪ঑ʣ YҎ߱ આ໌
TQSJOHEBUBTPVSDFJOJUJBMJ[BUJPONPEF
TQSJOHTRMJOJUFOBCMFE	

TQSJOHTRMJOJUNPEF
%#ॳ‫ظ‬Խ‫ػ‬ೳΛ࡞ಈͤ͞Δ৚݅
TQSJOHEBUBTPVSDFQMBUGPSN TQSJOHTRMJOJUQMBUGPSN
EBUBTRMɺTDIFNBTRMͷ෦෼ͷ
ࢦఆ
TQSJOHEBUBTPVSDFTDIFNB TQSJOHTRMJOJUTDIFNBMPDBUJPOT TDIFNBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFTDIFNBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF TDIFNBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFTDIFNBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE TDIFNBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFEBUB TQSJOHTRMJOJUEBUBMPDBUJPOT EBUBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFEBUBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF EBUBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFEBUBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE EBUBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFDPOUJOVFPOFSSPS TQSJOHTRMJOJUDPOUJOVFPOFSSPS
4DSJQU్தͰΤϥʔ͕‫ܧʹ͖࣌ͨى‬
ଓ͢Δ͔
TQSJOHEBUBTPVSDFTFQBSBUPS TQSJOHTRMJOJUTFQBSBUPS 4DSJQUͷ۠੾Γจࣈ
TQSJOHEBUBTPVSDFTRMTDSJQUFODPEJOH TQSJOHTRMJOJUFODPEJOH 4DSJQUͷจࣈΤϯίʔσΟϯά
஫ҙ఺ᶃ
w ͸݁ߏා͍όά͕ɾɾɾ
w ຊ൪‫ڥ؀‬%#Λॳ‫ظ‬Խ͠ͳ͍Α͏஫ҙ
࡞ಈ৚݅ Y
૊ࠐ%#ͷ৔߹ͷΈ FNCFEEFE
FNCFEEFE
 FNCFEEFE
FNCFEEFE
ৗʹ࡞ಈ BMXBZT USVF BMXBZT
ແޮ OFWFS GBMTF OFWFS
σϑΥϧτ஋
IUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHCPPUJTTVFT
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4DSJQUͰͷ%#ॳ‫ظ‬Խ‫ػ‬ೳʢTDIFNBTRMEBUBTRMʣͷ಺෦ߏ଄ͷ
มߋ͕͋ΓɺϓϩύςΟ͕มߋʹͳ͍ͬͯΔɻ
σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ

YҎલʢY͔Βඇਪ঑ʣ YҎ߱ આ໌
TQSJOHEBUBTPVSDFJOJUJBMJ[BUJPONPEF
TQSJOHTRMJOJUFOBCMFE	

TQSJOHTRMJOJUNPEF
%#ॳ‫ظ‬Խ‫ػ‬ೳΛ࡞ಈͤ͞Δ৚݅
TQSJOHEBUBTPVSDFQMBUGPSN TQSJOHTRMJOJUQMBUGPSN
EBUBTRMɺTDIFNBTRMͷ෦෼ͷ
ࢦఆ
TQSJOHEBUBTPVSDFTDIFNB TQSJOHTRMJOJUTDIFNBMPDBUJPOT TDIFNBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFTDIFNBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF TDIFNBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFTDIFNBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE TDIFNBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFEBUB TQSJOHTRMJOJUEBUBMPDBUJPOT EBUBTRMͷϦιʔεύε
TQSJOHEBUBTPVSDFEBUBVTFSOBNF TQSJOHTRMJOJUVTFSOBNF EBUBTRMͷ%#Ϣʔβ໊
TQSJOHEBUBTPVSDFEBUBQBTTXPSE TQSJOHTRMJOJUQBTTXPSE EBUBTRMͷ%#Ϣʔβύεϫʔυ
TQSJOHEBUBTPVSDFDPOUJOVFPOFSSPS TQSJOHTRMJOJUDPOUJOVFPOFSSPS
4DSJQU్தͰΤϥʔ͕‫ܧʹ͖࣌ͨى‬
ଓ͢Δ͔
TQSJOHEBUBTPVSDFTFQBSBUPS TQSJOHTRMJOJUTFQBSBUPS 4DSJQUͷ۠੾Γจࣈ
TQSJOHEBUBTPVSDFTRMTDSJQUFODPEJOH TQSJOHTRMJOJUFODPEJOH 4DSJQUͷจࣈΤϯίʔσΟϯά
஫ҙ఺ᶄ
w YҎલ͸TDIFNBTRMͱEBUBTRMΛผͷ%#ϢʔβͰ࣮ߦͰ͖ͨ
w YͰ͸ಉҰ%#ϢʔβͰͷΈ࣮ߦͰ͖Δʢઃఆ΋ҰຊԽʣ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ
w σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬
w %FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ
w CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ
w SSPS$POUSPMMFSͷHFUSSPS1BUI	
ͷഇࢭ
w ͦͷଞ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
ΞϓϦέʔγϣϯ৘ใΛ։ࣔ͢ΔDUVBUPSͷʮJOGPʯ͕σϑΥϧ
τͰެ։͞Εͳ͘ͳͬͨɻ
σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬

IUUQTEPDTTQSJOHJPTQSJOHCPPUEPDTSFGFSFODFIUNMBDUVBUPSIUNMBDUVBUPS
Y:FT
ˣ
Y/P
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4QSJOH4FDVSJUZґଘແ͠ͷΞϓϦέʔγϣϯͷ৔߹
σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬

Y Y
ެ։͞Ε͍ͯͳ͍
ʮHJUDPNNJUJEQMVHJOʯΛ༻͍ͯϏϧυ࣌ʹHJUQSPQFSUJFTΛੜ੒ͨ͠৔߹ͷྫ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4QSJOH4FDVSJUZґଘ͋ΓͷΞϓϦέʔγϣϯͷ৔߹
σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬

Y
Y
w ೝূର৅ͱͳͬͨ
w ެ։͞Ε͍ͯͳ͍
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
อ‫ޢ‬Λղআ͢Δํ๏
σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬

Y
management.endpoints.web.exposure.include=health,info
BQQMJDBUJPOQSPQFSUJFT
ެ։͞Εͨ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ
w σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬
w %FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ
w CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ
w SSPS$POUSPMMFSͷHFUSSPS1BUI	
ͷഇࢭ
w ͦͷଞ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
4QSJOH#PPUʹͯσϑΥϧτͰۭจࣈஔ͖‫͑͞׵‬ΕΔΑ͏ʹͳ
ͬͨΤϥʔϝοηʔδ͕ɺ͔Β͸߲໨͝ͱ࡟আ͞Εͨɻ
%FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ


UJNFTUBNQ5
TUBUVT

FSSPS#BE3FRVFTU

QBUIFSSPS@NFTTBHF
^
Y

UJNFTUBNQ5
TUBUVT

FSSPS#BE3FRVFTU

NFTTBHF

QBUIFSSPS@NFTTBHF
^ NFTTBHF߲໨
ࣗମ͕ͳ͘ͳͬͨ
YʙY

UJNFTUBNQ5
TUBUVT

FSSPS#BE3FRVFTU

NFTTBHF5453303.44(

QBUIFSSPS@NFTTBHF
^
Y
NFTTBHF͕σϑΥͰ
ۭจࣈʹͳͬͨ
@GetMapping(error_message)
public String errorMessage() {
throw new ResponseStatusException(
HttpStatus.BAD_REQUEST,
TEST ERROR MESSAGE);
}
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
ϝοηʔδΛද͍ࣔͨ͠৔߹͸ɺ4QSJOH#PPUʙͰͷରԠͱ
ಉ༷ͷઃఆΛߦ͏ɻ
%FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ


UJNFTUBNQ5
TUBUVT

FSSPS#BE3FRVFTU

NFTTBHF5453303.44(

QBUIFSSPS@NFTTBHF
^
Y
NFTTBHF߲໨
ͱϝοηʔδ͕෮‫ͨ͠׆‬
server.error.include-message=always
BQQMJDBUJPOQSPQFSUJFT
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
w σʔλϕʔεॳ‫ظ‬Խ‫ػ‬ೳͷϦϑΝΫλ
w σϑΥϧτͰͷJOGPΤϯυϙΠϯτͷอ‫ޢ‬
w %FGBVMUSSPS7JFXͷϝοηʔδඇදࣔ
w CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ
w SSPS$POUSPMMFSͷHFUSSPS1BUI	
ͷഇࢭ
w ͦͷଞ
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
CTUSBDU3PVUJOH%BUB4PVSDFʹର͢ΔϔϧενΣοΫ͕ਖ਼֬ʹ‫ػ‬
ೳ͢ΔΑ͏ʹͳͬͨɻ
CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ
Y

Y
management.endpoint.health.show-details=always
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
Կ͔͠Βͷϧʔϧʹ‫͍ͯͮج‬ɺෳ਺ͷ%BUB4PVSDFΛಈతʹ੾Γସ
͑Δ͜ͱ͕Մೳͳ%BUB4PVSDFɻ
ࢀߟɹCTUSBDU3PVUJOH%BUB4PVSDFʹ͍ͭͯ

CTUDBU3PVUJOH
%BUB4PVSDF
۩৅Ϋϥε
QQMJDBUJPO
%BUB4PVSDF
%BUB4PVSDF
ɾɾɾ ɾɾɾ
%BUB4PVSDFͷৼΓ෼͚ϧʔϧΛ࣮૷
AbstractRoutingDataSource routingDataSource = new AbstractRoutingDataSource() {
@Override
protected Object determineCurrentLookupKey() {
return idHolder.getId() % 2 == 0 ? even : odd;
}
};
routingDataSource.setTargetDataSources(
Map.of(even, dataSource1, odd, dataSource2));
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
FWFO
PEE
JE
4QSJOH#PPUYͷϔϧενΣοΫͰ͸੾Γସ͑ର৅ͷ
%BUB4PVSDFશͯͷϔϧενΣοΫΛߦ͏ɻ
CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ

CTUDBU3PVUJOH
%BUB4PVSDF
۩৅Ϋϥε
QQMJDBUJPO
%BUB4PVSDF
%BUB4PVSDF
ɾɾɾ ɾɾɾ
DUVBUPS
-PBE#BMBODFS
)FBMUI
)FBMUI
)FBMUI
)FBMUI
)FBMUI 61
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
Y
%#͕̍ͭͰ΋ো֐͕‫͖ى‬ΔͱϔϧενΣοΫ͕/(ͱͳΔΑ͏ʹͳ
ͬͨɻ
CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ

CTUDBU3PVUJOH
%BUB4PVSDF
۩৅Ϋϥε
QQMJDBUJPO
%BUB4PVSDF
%BUB4PVSDF
ɾɾɾ ɾɾɾ
DUVBUPS
-PBE#BMBODFS
)FBMUI
)FBMUI
)FBMUI
)FBMUI
)FBMUI %08/ҟৗΠϯελϯεͱΈͳ͠ɺ-#͔Β੾Γ཭͠౳
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬
Y
Ұ෦ͷ%#͚ͩͰαʔϏε‫ܧ‬ଓ͞
͍ͤͨ৔߹͸໰୊͋Γ
ແޮʹ͍ͨ͠৔߹͸ɺҎԼͰઃఆΛ0''ʹ͢Δɻ
CTUSBDU3PVUJOH%BUB4PVSDFͷϔϧενΣοΫ࢓༷มߋ

# AbstractRoutingDataSourceҎ֎ͷDataSource͕ଘࡏ͢Δ৔߹
management.health.db.ignore-routing-data-sources=true
# ଘࡏ͠ͳ͍৔߹
management.health.db.enabled=false
BQQMJDBUJPOQSPQFSUJFT
Y
‫ط‬ଘ‫ػ‬ೳͷมߋ΍Ө‫ڹ‬

More Related Content

What's hot

C# for C++ programmers
C# for C++ programmersC# for C++ programmers
C# for C++ programmers
Mark Whitaker
 
Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮
moai kids
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 

What's hot (20)

PostgreSQL監査
PostgreSQL監査PostgreSQL監査
PostgreSQL監査
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編超簡単!Subversion入門 準備編
超簡単!Subversion入門 準備編
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
C# for C++ programmers
C# for C++ programmersC# for C++ programmers
C# for C++ programmers
 
Kamonを理解する
Kamonを理解するKamonを理解する
Kamonを理解する
 
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
 
Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮Javaにおけるデータシリアライズと圧縮
Javaにおけるデータシリアライズと圧縮
 
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
人気番組との戦い! Javaシステムのパフォーマンスチューニング奮闘記
 
Win10Pcap を使って見る
Win10Pcap を使って見るWin10Pcap を使って見る
Win10Pcap を使って見る
 
Kotlinアンチパターン
KotlinアンチパターンKotlinアンチパターン
Kotlinアンチパターン
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
 
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
 
福岡大学における公開用NTPサービス事例(LACNOG2019発表資料日本語版)
福岡大学における公開用NTPサービス事例(LACNOG2019発表資料日本語版)福岡大学における公開用NTPサービス事例(LACNOG2019発表資料日本語版)
福岡大学における公開用NTPサービス事例(LACNOG2019発表資料日本語版)
 
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
Introduction httpClient on Java11 / Java11時代のHTTPアクセス再入門
 

Similar to What's New in Spring Boot 2.5

Gerencia de informatic apdf
Gerencia de informatic apdfGerencia de informatic apdf
Gerencia de informatic apdf
Giomar Serna
 
Vol vier05ag
Vol vier05ag Vol vier05ag
Vol vier05ag
hipicoscl
 
Japanese niv
Japanese nivJapanese niv
Japanese niv
griffey24
 
Hioki short catalog_e9-12b_denkei_ss
Hioki short catalog_e9-12b_denkei_ssHioki short catalog_e9-12b_denkei_ss
Hioki short catalog_e9-12b_denkei_ss
NIHON DENKEI SINGAPORE
 
Calea spre Parteneriat - Programul Introducing Broker
Calea spre Parteneriat - Programul Introducing BrokerCalea spre Parteneriat - Programul Introducing Broker
Calea spre Parteneriat - Programul Introducing Broker
SSIF Romcapital SA
 
大規模画像配信とPerl
大規模画像配信とPerl大規模画像配信とPerl
大規模画像配信とPerl
Masahiro Nagano
 

Similar to What's New in Spring Boot 2.5 (20)

Biw learning in the new normal
Biw learning in the new normalBiw learning in the new normal
Biw learning in the new normal
 
Buenas practicas
Buenas practicasBuenas practicas
Buenas practicas
 
Gerencia de informatic apdf
Gerencia de informatic apdfGerencia de informatic apdf
Gerencia de informatic apdf
 
Tax, GST, Direct and Indirect Tax MCQS 3 by Dr Mamata Rathi
Tax, GST, Direct and Indirect Tax MCQS 3 by Dr Mamata RathiTax, GST, Direct and Indirect Tax MCQS 3 by Dr Mamata Rathi
Tax, GST, Direct and Indirect Tax MCQS 3 by Dr Mamata Rathi
 
Volvie5
Volvie5Volvie5
Volvie5
 
Vol vier05ag
Vol vier05ag Vol vier05ag
Vol vier05ag
 
Japanese niv
Japanese nivJapanese niv
Japanese niv
 
ASSEMBLEA GENERALE ANDIL 2014
ASSEMBLEA GENERALE ANDIL 2014ASSEMBLEA GENERALE ANDIL 2014
ASSEMBLEA GENERALE ANDIL 2014
 
Hioki short catalog_e9-12b_denkei_ss
Hioki short catalog_e9-12b_denkei_ssHioki short catalog_e9-12b_denkei_ss
Hioki short catalog_e9-12b_denkei_ss
 
Coding Guidelines
Coding GuidelinesCoding Guidelines
Coding Guidelines
 
Kikusui pcr wea Ultra-Compact AC/DC Programmable Power Supply (CV/CF)
Kikusui pcr wea Ultra-Compact AC/DC Programmable Power Supply (CV/CF) Kikusui pcr wea Ultra-Compact AC/DC Programmable Power Supply (CV/CF)
Kikusui pcr wea Ultra-Compact AC/DC Programmable Power Supply (CV/CF)
 
Kikusui pcr wea-wea2 AC Power Supply
Kikusui pcr wea-wea2 AC Power Supply Kikusui pcr wea-wea2 AC Power Supply
Kikusui pcr wea-wea2 AC Power Supply
 
Calea spre Parteneriat - Programul Introducing Broker
Calea spre Parteneriat - Programul Introducing BrokerCalea spre Parteneriat - Programul Introducing Broker
Calea spre Parteneriat - Programul Introducing Broker
 
Mitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der ArbeitgeberattraktivitätMitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
Mitarbeiterbindung als Instrument zur Steigerung der Arbeitgeberattraktivität
 
Ttake Mandrini 01
Ttake Mandrini 01Ttake Mandrini 01
Ttake Mandrini 01
 
Vie12ag
Vie12agVie12ag
Vie12ag
 
12ago
12ago 12ago
12ago
 
G2 bsc commissioning manual release b7.2
G2 bsc commissioning manual   release b7.2G2 bsc commissioning manual   release b7.2
G2 bsc commissioning manual release b7.2
 
大規模画像配信とPerl
大規模画像配信とPerl大規模画像配信とPerl
大規模画像配信とPerl
 
v20200429 Diaspora International Decade for Peoples of African Descent SDGs A...
v20200429 Diaspora International Decade for Peoples of African Descent SDGs A...v20200429 Diaspora International Decade for Peoples of African Descent SDGs A...
v20200429 Diaspora International Decade for Peoples of African Descent SDGs A...
 

Recently uploaded

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Recently uploaded (20)

CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

What's New in Spring Boot 2.5