เช•เซเชตเชพเชฐเซเช•เชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช—เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡

เชฆเชฐเซ‡เช•เชจเซ‡ เชจเชฎเชธเซเช•เชพเชฐ, เช…เชนเซ€เช‚ เช•เซเชตเชพเชฐเซเช•เชธ เชถเซเชฐเซ‡เชฃเซ€เชจเซ€ เชคเซเชฐเซ€เชœเซ€ เชชเซ‹เชธเซเชŸ เช›เซ‡!

เช•เซเชตเชพเชฐเซเช•เชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช—เชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡

เชœเชพเชตเชพ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเซ€เชธเชจเซ‹ เชตเชฟเช•เชพเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเซ‡ เช˜เชฃเซ€เชตเชพเชฐ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช—เซเชฐเชนเชฃ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ ะธ เชตเชธเช‚เชค เชฌเซ‚เชŸ เช…เชฒเช— เช…เชจเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ API เช›เซ‡. เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซเชธ เชเชชเซ€เช†เชˆเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชตเชฒเชฃ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‹ เชคเซ‡เช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชจเชตเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชจเซ‡ เชฐเชจเชŸเชพเช‡เชฎ เช˜เชŸเช•เซ‹ เชถเซ€เช–เชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเชพเช—เซ‡ เช›เซ‡. เช†เชœเซ‡ เช†เชชเชฃเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชฒเซ‹เช•เชชเซเชฐเชฟเชฏเชจเชพ เชตเชฟเช•เชพเชธเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚ เชตเชธเช‚เชค เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเช•เชธเชพเชฅเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— API เช…เชจเซ‡ เชจเชตเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เช•เซเชตเชพเชฐเซเช•เชธ.

เชฅเซ‹เชกเซ€ เชตเชงเซ เชตเชฟเช—เชคเชฎเชพเช‚, เช…เชฎเซ‡ เชธเซŒเชชเซเชฐเชฅเชฎ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธเชจเซ‡ เชคเซ‡เชฎเชจเชพ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เช•เชพเชฎเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชตเชพเชฐเซเช•เชธ เชธเซเชชเซเชฐเชฟเช‚เช— API เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เช…เชตเช•เชพเชถ เช…เชจเซ‡ เชตเชฟเช—เชคเซ‹ เชœเซ‹เชˆเชถเซเช‚. เชชเช›เซ€ เช…เชฎเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เชจเซ‡ เช†เชตเชฐเซ€ เชฒเชˆเชถเซเช‚, เชœเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชตเชธเช‚เชค เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡.

เชถเชพ เชฎเชพเชŸเซ‡ เช•เซเชตเชพเชฐเซเช•เชธ? เชธเซŒเชชเซเชฐเชฅเชฎ, เช† เชฒเชพเช‡เชต เช•เซ‹เชกเชฟเช‚เช— เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API, เชธเซเชชเซเชฐเชฟเช‚เช— API เช…เชจเซ‡ เช…เชจเซเชฏ เชœเชพเชตเชพ API เชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซเช‚ เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เชฐเซ€เชฒเซ‹เชกเชฟเช‚เช—, เชœเซ‡ เชฎเชพเชคเซเชฐ เชเช• เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: mvn quarkus:dev. เชฌเซ€เชœเซเช‚, เชฎเชพเช‚ เช—เชฃเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชตเซเชฏเช•เซเชคเชฟ เชธเซ‡เชตเชพ (เชœเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช—, เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช…เชจเซ‡ JPA API เชจเซ‡ เชฎเซ‚เชณ GraalVM เช‡เชฎเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเชพเชˆเชจเชฐเซ€เชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‡ เช›เซ‡) เชฎเชพเชคเซเชฐ 0.055 เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ RESTful เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸ เชชเชฐ เชฒเช—เชญเช— 90 MB RAM (RSS) เชฒเซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชคเซ‡เชจเซเช‚ เชธเช‚เช•เชฒเชจ เชชเซ‹เชคเซ‡ เชฎเชพเชคเซเชฐ เชเช• เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: mvn package -Pnative.

เช…เชฎเซ‡ เชฎเชพเชˆเช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเชˆเชฒ เชตเชฟเชถเซ‡ เชตเชฟเช—เชคเชฎเชพเช‚ เชœเชˆเชถเซเช‚ เชจเชนเซ€เช‚, เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธเชจเซ‡ เชธเชฎเชœเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชตเชพ เชธเชฟเชตเชพเชฏ เช•เซ‡ เชคเซ‡เช“ เช•เซเชตเชพเชฐเซเช•เชธเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเชˆเชฒ API เชธเชพเชฅเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ

เช† เชฒเซ‡เช–เชจเซ‡ เชธเชฐเชณ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชนเซ€เช‚ เชฎเชพเชคเซเชฐ เชธเชฎเชฐเซเชฅเชจเชจเชพ เช‰เชšเซเชš-เชธเซเชคเชฐเชจเชพ เชชเชพเชธเชพเช“เชจเซ‡ เช†เชตเชฐเซ€ เชฒเชˆเชถเซเช‚. เช•เซเชฏเซเชฌเชฐเซเชจเซ‡เชŸเชฟเชธ, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชธเชฎเชœเชตเซเช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เช•เซเชตเชพเชฐเซเช•เชธ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชœเชพเชตเชพ เชธเซเชŸเซ‡เช• เชคเชฐเซ€เช•เซ‡ เชธเซเชฅเชฟเชค เช›เซ‡, เชคเซ‡ เชœเชพเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ เช…เชจเซ‡ เชธเซ‡เชตเชพเช“เชจเชพ เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ เช…เชจเซ‡ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชธเชฎเชฏเชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชนเซ‹เชธเซเชŸ เชชเชฐ เชคเซ‡เชฎเชจเซ€ เช˜เชจเชคเชพเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เช•เชฐเชตเชพ เช…เชจเซ‡ เชเช•เช‚เชฆเชฐ เช–เชฐเซเชš เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡.

เช•เซเชตเชพเชฐเซเช•เชธ เชชเชฃ เช“เชŸเซ‹ เชœเชจเชฐเซ‡เชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ Kubernetes เชธเช‚เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ เช‘เชซเชฐเซเชธ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพเช“ Kubernetes เช…เชจเซ‡ Red Hat OpenShift เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ เชœเชฎเชพเชตเชŸ เชฎเชพเชŸเซ‡. เชตเชงเซเชฎเชพเช‚, เช•เซเชตเชพเชฐเซเช•เชธ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ Dockerfile.jvm (JVM เชชเซ‡เช•เซ‡เชœเชฟเช‚เช—) เช…เชจเซ‡ Dockerfile.native (เชฎเซ‚เชณ เชฌเชพเชˆเชจเชฐเซ€ เชชเซ‡เช•เซ‡เชœเชฟเช‚เช—) เชซเชพเชˆเชฒเซ‹ เช†เชชเชฎเซ‡เชณเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡.

เช…เช‚เชคเซ‡, เชฒเช•เซเชทเซเชฏ เชœเชฎเชพเชตเชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เชจเซ‡, เช•เซเชตเชพเชฐเซเช•เชธ เชเชตเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชœเชพเชตเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เช•เซ‡ เชœเซเชฏเชพเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเชพ เชธเซเชคเชฐเซ‡ เชธเชฎเชพเชจ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเซ‹เชฏ. เช•เซ‹เชทเซเชŸเช• 1 เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชฒเชพเช•เซเชทเชฃเชฟเช• เชœเชพเชตเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชตเชšเซเชšเซ‡เชจเชพ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐเชจเซ‹ เชจเช•เชถเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เช•เซ‹เชทเซเชŸเช• 1. เชœเชพเชตเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชตเชšเซเชšเซ‡เชจเชพ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เชชเชคเซเชฐเชตเซเชฏเชตเชนเชพเชฐเชจเซ‹ เชจเช•เชถเซ‹.

เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช•
เชชเชฐเช‚เชชเชฐเชพเช—เชค เชตเชธเช‚เชค เชฌเซเชŸ
เช•เซเชฏเซเชฌเชฐเซเชจเซ‡เชŸเชฟเชธ

เชธเซ‡เชตเชพ เชถเซ‹เชง
เชฏเซเชฐเซ‡เช•เชพ
DNS

เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ
เชตเชธเช‚เชค เชฎเซ‡เช˜ เชฐเซ‚เชชเชฐเซ‡เช–เชพ
เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชจเช•เชถเชพ/เชฐเชนเชธเซเชฏเซ‹

เชฒเซ‹เชก เชฌเซ‡เชฒเซ‡เชจเซเชธเชฟเช‚เช—
เชฐเชฟเชฌเชจ (เช•เซเชฒเชพเชฏเชจเซเชŸ เชฌเชพเชœเซ)
เชธเซ‡เชตเชพ, เชชเซเชฐเชคเชฟเช•เซƒเชคเชฟ เชจเชฟเชฏเช‚เชคเซเชฐเช• (เชธเชฐเซเชตเชฐ เชฌเชพเชœเซ)

เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเชจเซเช‚ เชธเช‚เช•เชฒเชจ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเซเช‚

เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เช เช›เซ€เช เช‰เชฆเชพเชนเชฐเชฃ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ, เชœเซเชฏเชพเช‚ เชธเซเชชเซเชฐเชฟเช‚เช— เช…เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เช…เชจเซ‡ เชคเซ‡ เชœ Java เชตเชฐเซเช—เชจเซ‹ เชเช•เชธเชพเชฅเซ‡ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช† เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชจเซ‹ เช•เซ‹เชก เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชฎเชพเช‚เชฅเซ€ เช•เชฎเซเชชเชพเช‡เชฒ เช…เชจเซ‡ เชฐเชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชตเชฟเช—เชคเซ‹ เชฎเชพเชŸเซ‡ README.md เชซเชพเช‡เชฒ เชœเซเช“.

เชตเชธเช‚เชค เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• API

เชจเชฟเชฐเซเชญเชฐเชคเชพ เช‡เชจเซเชœเซ‡เช•เซเชถเชจ

เช•เซเชตเชพเชฐเซเช•เชธ เชถเซเชฐเซ‡เชฃเซ€เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เชธเช‚เชฆเชฐเซเชญเซ‹ เช…เชจเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพ เช‡เชจเซเชœเซ‡เช•เซเชถเชจ (CDI) APIs เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€ เชˆเชจเซเชœเซ‡เช•เซเชถเชจ (เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ€เช†เชˆ) เชเชชเซ€เช†เชˆ. เชœเซ‹ เชคเชฎเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹, เชœเชพเชตเชพ EE เช…เชจเซ‡ เชœเช•เชพเชฐเซเชคเชพ EE, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ CDI เชฅเซ€ เช–เซ‚เชฌ เชชเชฐเชฟเชšเชฟเชค เช›เซ‹. เชฌเซ€เชœเซ€ เชคเชฐเชซ, เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ€เช†เชˆ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชคเชคเชพ เชนเชพเช‚เชธเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ€เช†เชˆ API เชฎเชพเชŸเซ‡ เช•เซเชตเชพเชฐเซเช•เชธ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— DI API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 2 เชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.

ะ’ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเซ€เชกเซ€เช†เชˆ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€ เชˆเชจเซเชœเซ‡เช•เซเชถเชจ เชฌเช‚เชจเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช† เชตเชฟเชทเชฏ เชชเชฐ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฎเชพเชŸเซ‡, เช•เชตเชพเชฐเซเช•เชธ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ เชœเซเช“ เชตเชธเช‚เชค DI เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 2. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— DI API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ€เช†เชˆ เชซเซ€เชšเชฐเซเชธ
เช‰เชฆเชพเชนเชฐเชฃเซ‹

เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸเชฐ เช‡เชจเซเชœเซ‡เช•เซเชถเชจ

public PersonSpringController(
   PersonSpringRepository personRepository,  // injected      
   PersonSpringMPService personService) {    // injected
      this.personRepository = personRepository;
      this.personService = personService;
}

เชซเซ€เชฒเซเชก เชˆเชจเซเชœเซ‡เช•เซเชถเชจ
เช“เชŸเซ‹เชตเชพเชฏเชฐเซเชก
เชญเชพเชต

@Autowired
@RestClient
SalutationRestClient salutationRestClient;

@Value("${fallbackSalutation}")
String fallbackSalutation;

เชฌเซ€เชจ
@ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ

@Configuration
public class AppConfiguration {
   @Bean(name = "capitalizeFunction")
   public StringFunction capitalizer() {
      return String::toUpperCase;
   }
}

เชชเซเชจ

@Component("noopFunction")
public class NoOpSingleStringFunction implements StringFunction {
   @Override
   public String apply(String s) {
      return s;
   }
}

เชธเซ‡เชตเชพ

@Service
public class MessageProducer {
   @Value("${greeting.message}")
   String message;

   public String getPrefix() {
      return message;
   }
}

เชตเซ‡เชฌ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช—เชฎเชถเซ‡ เช•เซ‡ เช•เซเชตเชพเชฐเซเช•เชธ เชชเซเชฐเชพเชฅเชฎเชฟเช• เชตเซ‡เชฌ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเซ‹เชกเชฒ เชคเชฐเซ€เช•เซ‡ JAX-RS, เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเช‚เชŸ, JSON-P เช…เชจเซ‡ JSON-B เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ API เชฎเชพเชŸเซ‡ เช•เซเชตเชพเชฐเซเช•เชธเชจเชพ เชคเชพเชœเซ‡เชคเชฐเชจเชพ เชธเชฎเชฐเซเชฅเชจเชฅเซ€ เช–เซเชถ เชฅเชถเซ‡, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ REST เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚. เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ€เช†เชˆเชจเซ€ เชœเซ‡เชฎ เชœ, เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ API เชธเชชเซ‹เชฐเซเชŸเชจเซ‹ เชฎเซเช–เซเชฏ เชงเซเชฏเซ‡เชฏ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธเชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃเชฎเชพเช‚ เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชธเช•เซเชทเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 3 เชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เช† เชตเชฟเชทเชฏ เชชเชฐ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซเชตเชพเชฐเซเช•เชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒเชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. เชตเชธเช‚เชค เชตเซ‡เชฌ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 3. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชตเซ‡เชฌ เชธเซเชตเชฟเชงเชพเช“
เช‰เชฆเชพเชนเชฐเชฃเซ‹

@RestController
@RequestMapping

@RestController
@RequestMapping("/person")
public class PersonSpringController {
   ...
   ...
   ...
}

@GetMapping
@เชชเซ‹เชธเซเชŸเชฎเซ‡เชชเชฟเช‚เช—
@เชชเซเชŸเชฎเซ‡เชชเชฟเช‚เช—
@DeleteMapping
@PatchMapping
@RequestParam
@RequestHeader
@MatrixVariable
@PathVariable
@CookieValue
@RequestBody
@ResponseStatus
@ExceptionHandler
@RestControllerAdvice (เช†เช‚เชถเชฟเช•)

@GetMapping(path = "/greet/{id}",
   produces = "text/plain")
   public String greetPerson(
   @PathVariable(name = "id") long id) {
   ...
   ...
   ...
}

เชตเชธเช‚เชค เชกเซ‡เชŸเชพ JPA

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช เชชเชฃ เชชเซเชฐเชถเช‚เชธเชพ เช•เชฐเชถเซ‡ เช•เซ‡ เช•เซเชตเชพเชฐเซเช•เชธ เชนเชพเช‡เชฌเชฐเชจเซ‡เชŸ ORM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ JPA เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชตเชธเช‚เชค เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชชเชฃ เชธเชพเชฐเชพ เชธเชฎเชพเชšเชพเชฐ เช›เซ‡: เช•เซเชตเชพเชฐเซเช•เชธ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพ JPA เชเชจเซ‹เชŸเซ‡เชถเชจ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพ JPA API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 4 เชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.
ะ’ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพ JPA API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เซเชตเชพเชฐเซเช•เชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒเชฎเชพเช‚ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เชตเชธเช‚เชค เชกเซ‡เชŸเชพ JPA เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 4. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพ JPA API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพ JPA เชธเซเชตเชฟเชงเชพเช“
เช‰เชฆเชพเชนเชฐเชฃเซ‹

CrudRepository

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€
JpaRepository
เชชเซ‡เชœเซ€เช‚เช— เช…เชจเซ‡ เชธเซ‹เชฐเซเชŸเชฟเช‚เช— เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€

public class PersonRepository extends 

    Repository {

    Person save(Person entity);

    Optional findById(Person entity);
}

เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชŸเซเช•เชกเชพเช“

public interface PersonRepository
         extends JpaRepository,
                 PersonFragment {
   ...
}

เชตเซเชฏเซเชคเซเชชเชจเซเชจ เช•เซเชตเซ‡เชฐเซ€ เชชเชฆเซเชงเชคเชฟเช“

public interface PersonRepository extends CrudRepository {

    List findByName(String name);
    
    Person findByNameBySsn(String ssn);
    
    Optional 
       findByNameBySsnIgnoreCase(String ssn);

    Boolean existsBookByYearOfBirthBetween(
            Integer start, Integer end);
}

เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชชเซเชฐเชถเซเชจเซ‹

public interface MovieRepository
         extends CrudRepository {

    Movie findFirstByOrderByDurationDesc();

    @Query("select m from Movie m where m.rating = ?1")
    Iterator findByRating(String rating);

    @Query("from Movie where title = ?1")
    Movie findByTitle(String title);
}

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API

เชธเชนเชจเชถเซ€เชฒเชคเชพ เชฆเซ‹เชท

เช•เชพเชธเซเช•เซ‡เชกเชฟเช‚เช— เชจเชฟเชทเซเชซเชณเชคเชพเช“เชจเซ‡ เชฐเซ‹เช•เชตเชพ เช…เชจเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเซ‹เชฒเซเชŸ เชธเชนเชฟเชทเซเชฃเซเชคเชพ เชฐเชšเชจเชพเช“ เช–เซ‚เชฌ เชœ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เช˜เชฃเชพ เชตเชฐเซเชทเซ‹เชฅเซ€ เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ เชฎเชพเชŸเซ‡ เชธเชฐเซเช•เชฟเชŸ เชฌเซเชฐเซ‡เช•เชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡. เชนเชพเชฏเชธเซเชŸเซเชฐเชฟเช•เซเชธ. เชœเซ‹ เช•เซ‡, Hystrix เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ€ เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ เชนเชตเซ‡ เชธเช•เซเชฐเชฟเชฏ เชฐเซ€เชคเซ‡ เชตเชฟเช•เชพเชธ เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชชเชพเช›เชณ เช˜เชฃเชพ เชตเชฐเซเชทเซ‹เชจเซ‹ เช‰เชคเซเชชเชพเชฆเชจ เช‰เชชเชฏเซ‹เช— เช›เซ‡. เชคเซ‡เชฅเซ€, เช•เซเชตเชพเชฐเซเช•เชธเชฎเชพเช‚ เชธเซ‡เชตเชพเช“เชจเซ€ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 5 เชฎเชพเช‚ เชตเชชเชฐเชพเชฏเซ‡เชฒ เช›เซ‡. เช† เช…เช‚เช—เซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชฎเชพเชŸเซ‡, เช•เซเชตเชพเชฐเซเช•เชธ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชœเซเช“ เชฆเซ‹เชท เชธเชนเชฟเชทเซเชฃเซเชคเชพ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 5. เชธเชฎเชฐเซเชฅเชฟเชค เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชซเซ‹เชฒเซเชŸ เชŸเซ‹เชฒเชฐเชจเซเชธ เชซเซ€เชšเชฐเซเชธ
เชตเชฐเซเชฃเชจ
เช‰เชฆเชพเชนเชฐเชฃเซ‹

@เช…เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชธ

เชเช• เช…เชฒเช— เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เชคเชฐเซเช•เชจเซ‹ เช…เชฎเชฒ

@Asynchronous
@Retry
public Future<String> getSalutation() {
   ...
   return future;
}

@เชฌเชฒเซเช•เชนเซ‡เชก

เชเช• เชธเชพเชฅเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‹

@Bulkhead(5)
public void fiveConcurrent() {
   makeRemoteCall(); //...
}

@เชธเชฐเซเช•เชฟเชŸเชฌเซเชฐเซ‡เช•เชฐ

เชธเซเชฎเชพเชฐเซเชŸ เชจเชฟเชทเซเชซเชณเชคเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช…เชจเซ‡ เชจเชฟเชทเซเชซเชณเชคเชพเช“เชฎเชพเช‚เชฅเซ€ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชคเชฟ

@CircuitBreaker(delay=500   // milliseconds
   failureRatio = .75,
   requestVolumeThreshold = 20,
   successThreshold = 5)
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

@เชซเซ‹เชฒเชฌเซ‡เช•

เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชตเซˆเช•เชฒเซเชชเชฟเช• เชคเชฐเซเช•เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเซ‹

@Timeout(500) // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

public String fallback() {
   return "hello";
}

เชซเชฐเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹

เชตเชฟเชจเช‚เชคเซ€ เชจเชฟเชทเซเชซเชณ เชฅเชตเชพ เชชเชฐ เชซเชฐเซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹

@Retry(maxRetries=3)
public String getSalutation() {
   makeRemoteCall(); //...
}

เชธเชฎเชฏ เชธเชฎเชพเชชเซเชค

เชจเชฟเชทเซเชซเชณเชคเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ

@Timeout(value = 500 )   // milliseconds
@Fallback(fallbackMethod = "fallback")
public String getSalutation() {
   makeRemoteCall(); //...
}

เชคเชชเชพเชธ เชธเซ‡เชตเชพเช“ (เชธเซ‡เชตเชพ เช†เชฐเซ‹เช—เซเชฏ)

Kubernetes เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช–เชพเชธ เชธเซ‡เชตเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เชธเซเชตเชพเชธเซเชฅเซเชฏ เชชเชฐ เชจเชœเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เช…เช‚เชคเชฐเซเช—เชค เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเซ‡ เชธเซ‡เชตเชพเช“เชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชธเซเชŸเชฎ เชนเซ‡เชฒเซเชฅ เชˆเชจเซเชกเชฟเช•เซ‡เชŸเชฐ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเช•เซเชŸเซเชฏเซเชเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช•เซเชตเชพเชฐเซเช•เชธเชฎเชพเช‚, เช† เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชนเซ‡เชฒเซเชฅเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เชœเซ€เชตเช‚เชคเชคเชพ เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชเช• เชธเชพเชฅเซ‡ เชœเซ€เชตเช‚เชคเชคเชพ เช…เชจเซ‡ เชคเชคเซเชชเชฐเชคเชพ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชนเซ‡เชฒเซเชฅ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 6 เชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช•เซเชตเชพเชฐเซเช•เชธ เชฎเซ‡เชจเซเชฏเซเช…เชฒเชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เช†เชฐเซ‹เช—เซเชฏ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชจ.

เช•เซ‹เชทเซเชŸเช• 6: เชธเชฎเชฐเซเชฅเชฟเชค เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชนเซ‡เชฒเซเชฅ API เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช†เชฐเซ‹เช—เซเชฏ เชธเซเชตเชฟเชงเชพเช“
เชตเชฐเซเชฃเชจ
เช‰เชฆเชพเชนเชฐเชฃเซ‹

@เชœเซ€เชตเช‚เชค

เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชฐเซ€เชฌเซ‚เชŸ เชจเชฟเชทเซเชซเชณ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เชเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ
เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซ:
เชนเซ‹เชธเซเชŸ: 8080/เชนเซ‡เชฒเซเชฅ/เชฒเชพเช‡เชต

@Liveness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(ready ? true:false)
     .withData("mydata", data)
     .build();  
}

@เชคเซˆเชฏเชพเชฐเซ€

เชœเซ‹ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชคเซˆเชฏเชพเชฐ เชจ เชนเซ‹เชฏ เชคเซ‹ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เชเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชฐ เชŸเซเชฐเชพเชซเชฟเช• เชฎเซ‹เช•เชฒเชถเซ‡ เชจเชนเซ€เช‚
เช…เช‚เชคเชฟเชฎ เชฌเชฟเช‚เชฆเซ:
เชฏเชœเชฎเชพเชจ: 8080/เช†เชฐเซ‹เช—เซเชฏ/เชคเซˆเชฏเชพเชฐ

@Readiness
public class MyHC implements HealthCheck {
  public HealthCheckResponse call() {

   ...
   return HealthCheckResponse
     .named("myHCProbe")
     .status(live ? true:false)
     .withData("mydata", data)
     .build();  
}

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เช“เชชเชฐเซ‡เชถเชจเชฒ เชนเซ‡เชคเซเช“ (เชชเซเชฐเชฆเชฐเซเชถเชจ SLAsเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡) เช…เชฅเชตเชพ เชฌเชฟเชจ-เช“เชชเชฐเซ‡เชถเชจเชฒ เชนเซ‡เชคเซเช“ (เชตเซเชฏเชตเชธเชพเชฏเชฟเช• SLA) เชฎเชพเชŸเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเช•เซเชŸเซเชฏเซเชเชŸเชฐ เช…เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชฎเซ€เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชฌเชฆเชฒเชพเชฎเชพเช‚, เช•เซเชตเชพเชฐเซเช•เชธ เชฌเซ‡เชเชฒเชพเช‡เชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ (JVM เช…เชจเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ), เชตเซ‡เชจเซเชกเชฐ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ (เช•เซเชตเชพเชฐเซเช•เชธ) เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃ JSON เช…เชจเซ‡ OpenMetrics (เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ) เช†เช‰เชŸเชชเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡. เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 7 เชฎเชพเช‚ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.

ะ’ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชฎเชพเชŸเซ‡, เช•เซเชตเชพเชฐเซเช•เชธ เชฎเซ‡เชจเซเชฏเซเช…เชฒ เชœเซเช“ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 7. เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชธเซเชตเชฟเชงเชพเช“
เชตเชฐเซเชฃเชจ
เช‰เชฆเชพเชนเชฐเชฃเซ‹

@เช—เชฃเชคเชฐเซ€

เชเช• เช•เชพเช‰เชจเซเชŸเชฐ เช•เชพเช‰เชจเซเชŸเชฐ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ€เช•เชพ เช•เชฐเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ เช•เซ‡เชŸเชฒเซ€ เชตเช–เชค เช•เซ‰เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เชคเซ‡เชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡

@Counted(name = "fallbackCounter", 
  displayName = "Fallback Counter", 
  description = "Fallback Counter")
public String salutationFallback() {
   return fallbackSalutation;
}

@ConcurrentGauge

เชเช• เช—เซ‡เชœ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ€เช•เชพ เช•เชฐเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเชฐ เชธเชนเชตเชฐเซเชคเซ€ เช•เซ‰เชฒเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡

@ConcurrentGuage(
  name = "fallbackConcurrentGauge", 
  displayName="Fallback Concurrent", 
  description="Fallback Concurrent")
public String salutationFallback() {
   return fallbackSalutation;
}

@เช—เซ‡เชœ

เชเช• เช—เซ‡เชœ เชธเซ‡เชจเซเชธเชฐ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ€เช•เชพ เช•เชฐเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชฎเชพเชชเซ‡ เช›เซ‡

@Metered(name = "FallbackGauge",
   displayName="Fallback Gauge",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

@เชฎเซ€เชŸเชฐ

เชฎเซ€เชŸเชฐ เชธเซ‡เชจเซเชธเชฐ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ€เช•เชพ เช•เชฐเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เช•เซ‰เชฒ เช†เชตเชฐเซเชคเชจเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‡ เช›เซ‡

@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

เชฎเซ‡เชŸเซเชฐเชฟเช•

เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช• เชฆเชพเช–เชฒ เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชงเชฐเชพเชตเชคเซ€ เชŸเซ€เช•เชพ

@Metric
@Metered(name = "MeteredFallback",
   displayName="Metered Fallback",
   description="Fallback frequency")
public String salutationFallback() {
   return fallbackSalutation;
}

เชธเชฎเชฏเชธเชฐ

เชŸเชพเชˆเชฎเชฐ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ€เช•เชพ เช•เชฐเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ€ เช…เชตเชงเชฟเชจเซ‡ เชŸเซเชฐเซ…เช• เช•เชฐเซ‡ เช›เซ‡

@Timed(name = "TimedFallback",
   displayName="Timed Fallback",
   description="Fallback delay")
public String salutationFallback() {
   return fallbackSalutation;
}

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเซเชธ

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ:8080/เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ/เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ
เชฎเซ‚เชณเชญเซ‚เชค เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ:8080/เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ/เชฌเซ‡เช
เชตเชฟเช•เซเชฐเซ‡เชคเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ:8080/เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ/เชตเซ‡เชจเซเชกเชฐ
เชฌเชงเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ:8080/เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ

เชฎเชพเชˆเช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เช˜เชฃเซ€ เชตเช–เชค RESTful เชเชจเซเชกเชชเซ‹เชˆเชจเซเชŸ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเชฐเซ‚เชช เช•เซเชฒเชพเชฏเช‚เชŸ API เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡. RESTful เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชตเชธเช‚เชค เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ RestTemplate เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช•เซเชตเชพเชฐเซเช•เชธ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ API เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเชพเช‚ เช‰เชชเชฏเซ‹เช—เชจเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซ‹เชทเซเชŸเช• 8 เชฎเชพเช‚ เช†เชชเซ‡เชฒ เช›เซ‡.

ะ’ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ RESTful เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชตเชฟเชทเชฏ เชชเชฐ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช•เซเชตเชพเชฐเซเช•เชธ เชฎเซ‡เชจเซเชฏเซเช…เชฒเชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เชฌเชพเช•เซ€เชจเชพ เช—เซเชฐเชพเชนเช• เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ.

เช•เซ‹เชทเซเชŸเช• 8. เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹.

เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฐเซ‡เชธเซเชŸ เช•เซเชฒเชพเชฏเชจเซเชŸ เชธเซเชตเชฟเชงเชพเช“
เชตเชฐเซเชฃเชจ
เช‰เชฆเชพเชนเชฐเชฃเซ‹

@RegisterRestClient

REST เช•เซเชฒเชพเชฏเช‚เชŸ เชคเชฐเซ€เช•เซ‡ เชŸเชพเช‡เชช เช•เชฐเซ‡เชฒ เชœเชพเชตเชพ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเซ‡ เช›เซ‡

@RegisterRestClient
@Path("/")
public interface MyRestClient {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getSalutation();
}

@RestClient

เชŸเชพเช‡เชช เช•เชฐเซ‡เชฒ REST เช•เซเชฒเชพเชฏเช‚เชŸ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ‡ เช›เซ‡

@Autowired // or @Inject
@RestClient
MyRestClient restClient;

เช†เชฎเช‚เชคเซเชฐเชฃ

REST เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡

System.out.println(
   restClient.getSalutation());

mp-rest/url

REST เชเชจเซเชกเชชเซ‹เช‡เชจเซเชŸเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‡ เช›เซ‡

application.properties:
org.example.MyRestClient/mp-rest/url=
   http://localhost:8081/myendpoint

เชชเชฐเชฟเชฃเชพเชฎเซ‹

เช† เชฌเซเชฒเซ‹เช—เชฎเชพเช‚, เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชกเซ‡เชตเชฒเชชเชฐเซเชธเชจเซ‡ เชฒเช•เซเชทเซเชฏเชฎเชพเช‚ เชฐเชพเช–เซ€เชจเซ‡, เช…เชฎเซ‡ เชœเชพเชตเชพ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชตเชฟเช•เชธเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชตเชพเชฐเซเช•เชธเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เชธเชพเชฅเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชฎเซ‚เชณ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เช•เซ‹เชกเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเซเช‚ เช•เซ‡ เชœเซ‡ เชธเซ‡เช‚เช•เชกเซ‹ เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ RAM เชฌเชšเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชฒเซ‹เชจเซเชš เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชเช• เชเชกเชชเซ€ เชจเชœเชฐ เชจเชพเช–เซ€. เชฎเชฟเชฒเชฟเชธเซ‡เช•เชจเซเชกเชจเซ€ เชฌเชพเชฌเชค.

เชœเซ‡เชฎ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเชฎเชœเซ€ เช—เชฏเชพ เช›เซ‹, เชธเซเชชเซเชฐเชฟเช‚เช— เช…เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชชเซเชฐเซ‹เชซเชพเช‡เชฒ API เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เชตเชฟเชถเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เชคเซ‡เชฎเชœ เช…เชจเซเชฏ เช˜เชฃเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€, เช†เชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. เช•เซเชตเชพเชฐเซเช•เชธ เชฎเซ‡เชจเซเชฏเซเช…เชฒ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹