�x��(sh��)�¹�������ֱ�ӳ���
�gӭ���R�ЈD�W(w��ng) Ո(q��ng) | ע��(c��)

���] Spring푑�(y��ng)ʽ����

�����磺�����]늳���������r(sh��)�g��2020-04-01
�_(k��i)���� 24cm �(y��)��(sh��)�� 18,370�(y��)
�� �D �r(ji��):¥48.5(4.9��) ���r(ji��)  ¥99.0 ��䛺�ɿ�����(hu��)�T�r(ji��)
����ُ(g��u)��܇(ch��) �ղ�
�_(k��i)������ ȫ��(ch��ng)���]
?�½������س���
��ܰ��ʾ��5�����ˆD��(sh��)��Ҫ�������β؛���󲿷֞�ȫ�£����ܷ�/�o(w��)�ܷ⣩����(g��)�e�D��(sh��)Ʒ��8-9�������п�
�Є���(xi��n)��(bi��o)ӛ����P(p��n)�ȸ�����ȫԔ��(x��)Ʒ���f(shu��)��>>
���(l��i)���Ǖ�(sh��)����>

Spring푑�(y��ng)ʽ���� ���(qu��n)��Ϣ

Spring푑�(y��ng)ʽ���� ����(sh��)��ɫ

��(d��ng)�¼��ҵ��Ј�(ch��ng)��(j��ng)��(zh��ng)��(d��o)����I(y��)��(du��)��푑�(y��ng)��ϵ�y(t��ng)�����󲻔����ӣ��@��(du��)�_(k��i)�l(f��)�ˆT��푑�(y��ng)ʽ���̼��g(sh��)������µ�Ҫ������Spring푑�(y��ng)ʽ���̡�����\������푑�(y��ng)ʽϵ�y(t��ng)�Ļ���ԭ�����֣�Ԕ�M�ؽ�B��푑�(y��ng)ʽϵ�y(t��ng)�ă�(y��u)��(sh��)�͑�(y��ng)�÷�����ͬ�r(sh��)������(sh��)����Spring��ܼ�WebFlux�ȹ�������(du��)푑�(y��ng)ʽ�����M(j��n)���˘O�ߌ�(sh��)�`�Ե�ָ��(d��o)������������(sh��)߀������Project Reactor�@һ푑�(y��ng)ʽ��������������Ɍ�(du��)����(sh��)�ČW(xu��)��(x��)���㌢�����������@Щ��������(g��u)��푑�(y��ng)ʽϵ�y(t��ng)�� ����(sh��)�m����־�ڌW(xu��)��(x��)푑�(y��ng)ʽ���̵ij���T����Ҫ��(g��u)��푑�(y��ng)ʽϵ�y(t��ng)���_(k��i)�l(f��)�ˆT��x��

Spring푑�(y��ng)ʽ���� ��(n��i)�ݺ�(ji��n)��

����(sh��)�����v��Spring푑�(y��ng)ʽ���̵Ļ��A(ch��)֪�R(sh��), ��B푑�(y��ng)ʽ���̵ļ��ɲ����䑪(y��ng)���ڔ�(sh��)��(j��)��(k��)�Լ������(w��)��ͨ�š�ͨ�^(gu��)��x, �x��߀��������푑�(y��ng)ʽϵ�y(t��ng)�đ�(y��ng)�ü��䃞(y��u)�c(di��n), ʹ��Spring 5��Spring WebFluxĬ�J(r��n)���ɵ�Project Reactor��(g��u)��푑�(y��ng)ʽϵ�y(t��ng), �Լ�ʹ��Spring Cloud��(g��u)����Ч��푑�(y��ng)ʽ΢����(w��)��

Spring푑�(y��ng)ʽ���� Ŀ�

�� 1 �� ��ʲô�x��푑�(y��ng)ʽ Spring 1

1.1����ʲô��Ҫ푑�(y��ng)�ԡ�1

1.2��푑�(y��ng)�ԑ�(y��ng)�ð�����6

1.3����ʲô����푑�(y��ng)ʽ Spring��9

1.4���Y(ji��)��16

�ڡ�2 �� Spring 푑�(y��ng)ʽ����—— �������17

2.1��Spring ������푑�(y��ng)ʽ��Q������17

2.1.1���^����ģʽ��18

2.1.2���^����ģʽʹ��ʾ����20

2.1.3������@EventListener ע��İl(f��)��ӆ�ģʽ��23

2.1.4��ʹ��@EventListener ע�☋(g��u)����(y��ng)�ó���24



2.2��ʹ�� RxJava ����푑�(y��ng)ʽ��ܡ�31

2.2.1���^���߼ӵ���������푑�(y��ng)ʽ����31

2.2.2�����a(ch��n)�����M(f��i)����(sh��)��(j��)��33

2.2.3�����ɮ������С�35

2.2.4�����D(zhu��n)�Q�͏���D��36

2.2.5��RxJava ���țQ�l���̓�(y��u)��(sh��)��39

2.2.6��ʹ�� RxJava �ؽ��҂��đ�(y��ng)�ó���41

2.3��푑�(y��ng)ʽ��(k��)��(ji��n)ʷ��45

2.4��푑�(y��ng)ʽ�F(xi��n)�46

2.5���Y(ji��)��48

�ڡ�3 �� 푑�(y��ng)ʽ��——�µ�����(bi��o)��(zh��n)��49

3.1���o(w��)̎���ڵ�푑�(y��ng)�ԡ�49

3.1.1��API ��һ���Ԇ�(w��n)�}��49

3.1.2��“��”�c“��”��52

3.1.3���������Ɔ�(w��n)�}��56

3.1.4����Q������60

3.2��푑�(y��ng)ʽ��Ҏ(gu��)�����A(ch��)֪�R(sh��)��60

3.2.1��푑�(y��ng)ʽ��Ҏ(gu��)����(sh��)��(zh��n)��66

3.2.2��푑�(y��ng)ʽ�����g(sh��)�����׼���71

3.2.3��JDK 9��77

3.3���߼�(j��)���}——푑�(y��ng)ʽ���еĮ����Ͳ��С�79

3.4��푑�(y��ng)ʽ�h(hu��n)�����D(zhu��n)׃��81

3.4.1��RxJava ���D(zhu��n)׃��81

3.4.2��Vert.x ���{(di��o)����83

3.4.3��Ratpack �ĸ��M(j��n)��84

3.4.4��MongoDB 푑�(y��ng)ʽ���(q��)��(d��ng)����85

3.4.5��푑�(y��ng)ʽ���g(sh��)�M�ό�(sh��)��(zh��n)��86

3.5���Y(ji��)��89

�ڡ�4 �� Project Reactor——푑�(y��ng)ʽ ��(y��ng)�ó���Ļ��A(ch��)��90

4.1��Project Reactor ��(ji��n)ʷ��90

4.1.1��Project Reactor 1.x �汾��91

4.1.2��Project Reactor 2.x �汾��93

4.2��Project Reactor ���衡94

4.2.1�����(xi��ng)Ŀ������ Reactor��96

4.2.2��푑�(y��ng)ʽ�(l��i)��——Flux �� Mono��96

4.2.3����(chu��ng)�� Flux ���к� Mono ���С�100

4.2.4��ӆ�푑�(y��ng)ʽ����102

4.2.5���ò������D(zhu��n)�Q푑�(y��ng)ʽ���С�105

4.2.6���Ծ��̷�ʽ��(chu��ng)������119

4.2.7���e(cu��)�`̎����125

4.2.8������̎����127

4.2.9���ᔵ(sh��)��(j��)�����䔵(sh��)��(j��)����127

4.2.10��̎��r(sh��)�g��131

4.2.11���M�Ϻ��D(zhu��n)�Q푑�(y��ng)ʽ����131

4.2.12��̎������133

4.2.13���y(c��)ԇ���{(di��o)ԇ Project Reactor��134

4.2.14��Reactor �����134

4.3��Project Reactor �ĸ߼�(j��)���}��135

4.3.1��푑�(y��ng)ʽ�����������ڡ�135

4.3.2��Reactor �еľ�(xi��n)���{(di��o)��ģ�͡�140

4.3.3��Project Reactor ��(n��i)Ļ��149

4.4���Y(ji��)��153

�ڡ�5 �� ʹ�� Spring Boot 2 ��(sh��)�F(xi��n)푑�(y��ng)�ԡ�154

5.1�����ن���(d��ng)�dzɹ����P(gu��n)�I��154

5.1.1��ʹ�� Spring Roo �Lԇ���� ���_(k��i)�l(f��)��(y��ng)�ó���156

5.1.2��Spring Boot �ǿ������L(zh��ng)�� ��(y��ng)�ó�����P(gu��n)�I��156

5.2��Spring Boot 2.0 �е�푑�(y��ng)ʽ��157

5.2.1��Spring Core �е�푑�(y��ng)ʽ��157

5.2.2��푑�(y��ng)ʽ Web��160

5.2.3��푑�(y��ng)ʽ Spring Data��162

5.2.4��푑�(y��ng)ʽ Spring Session��163

5.2.5��푑�(y��ng)ʽ Spring Security��163

5.2.6��푑�(y��ng)ʽ Spring Cloud��163

5.2.7��푑�(y��ng)ʽ Spring Test��164

5.2.8��푑�(y��ng)ʽ�O(ji��n)�ء�164

5.3���Y(ji��)��165

�ڡ�6 �� WebFlux ����������ͨ�š�166

6.1��WebFlux �������푑�(y��ng)ʽ����(w��)�����A(ch��)��166

6.1.1��푑�(y��ng)ʽ Web ��(n��i)�ˡ�169

6.1.2��푑�(y��ng)ʽ Web �� MVC ��ܡ�171

6.1.3������ WebFlux �ļ�����(sh��)ʽWeb��174

6.1.4������ WebClient �ķ����� �����(w��)ͨ�š�178

6.1.5��푑�(y��ng)ʽ WebSocket API��181

6.1.6������ WebSocket �p����(j��) ���Ʒ��푑�(y��ng)ʽ SSE��184

6.1.7��푑�(y��ng)ʽģ�����桡186

6.1.8��푑�(y��ng)ʽ Web ��ȫ��188

6.1.9���c����푑�(y��ng)ʽ��(k��)�Ľ�����191

6.2����(du��)�� WebFlux �� Web MVC��192

6.2.1�����^��ܕr(sh��)�Ķ��ɡ�192

6.2.2��ȫ������ͱ��^��199

6.3��WebFlux �đ�(y��ng)�á�216

6.3.1������΢����(w��)��ϵ�y(t��ng)��216

6.3.2��̎���͑�(h��)���B���ٶ�����ϵ�y(t��ng)��217

6.3.3������?q��)��r(sh��)ϵ�y(t��ng)��217

6.3.4��WebFlux ��(sh��)��(zh��n)��217

6.4���Y(ji��)��221

�ڡ�7 �� 푑�(y��ng)ʽ��(sh��)��(j��)��(k��)�L��(w��n)��222

7.1���F(xi��n)����(sh��)��(j��)̎��ģʽ��222

7.1.1���I(l��ng)���(q��)��(d��ng)�O(sh��)Ӌ(j��)��223

7.1.2��΢����(w��)�r(sh��)���Ĕ�(sh��)��(j��)�惦(ch��)��223

7.1.3�����Z(y��)�Գ־û���226

7.1.4����(sh��)��(j��)��(k��)������(w��)��227

7.1.5����΢����(w��)���픵(sh��)��(j��)��228

7.2���@ȡ��(sh��)��(j��)��ͬ��ģ�͡�233

7.2.1����(sh��)��(j��)��(k��)�L��(w��n)���B�Ӆf(xi��)�h��233

7.2.2����(sh��)��(j��)��(k��)�(q��)��(d��ng)����235

7.2.3��JDBC��236

7.2.4��Spring JDBC��238

7.2.5��Spring Data JDBC��239

7.2.6��JPA��241

7.2.7��Spring Data JPA��242

7.2.8��Spring Data NoSQL��243

7.2.9��ͬ��ģ�͵ľ����ԡ�245

7.2.10��ͬ��ģ�͵ă�(y��u)�c(di��n)��247

7.3��ʹ�� Spring Data �M(j��n)��푑�(y��ng)ʽ��(sh��)��(j��)�L��(w��n)��247

7.3.1��ʹ�� MongoDB 푑�(y��ng)ʽ��(k��)��248

7.3.2���M�ϴ惦(ch��)��(k��)������251

7.3.3��푑�(y��ng)ʽ�惦(ch��)��(k��)�Ĺ���ԭ����255

7.3.4��푑�(y��ng)ʽ�„�(w��)��261

7.3.5��Spring Data 푑�(y��ng)ʽ�B������268

7.3.6�����ƺ��A(y��)�ڵĸ��M(j��n)��270

7.3.7��������(sh��)��(j��)��(k��)�L��(w��n)��271

7.3.8��푑�(y��ng)ʽ�P(gu��n)ϵ�͔�(sh��)��(j��)��(k��)�B�ӡ�273

7.4����ͬ���惦(ch��)��(k��)�D(zhu��n)�Q��푑�(y��ng)ʽ�惦(ch��)��(k��)��276

7.4.1��ʹ�� rxjava2-jdbc ��(k��)��276

7.4.2�����bͬ�� CrudRepository��278

7.5��푑�(y��ng)ʽ Spring Data ��(sh��)��(zh��n)��281

7.6���Y(ji��)��284

�ڡ�8 �� ʹ�� Cloud Streams ������s�ԡ�286

8.1����Ϣ��������(w��)������Ϣ�(q��)��(d��ng)ϵ�y(t��ng)���P(gu��n)�I��286

8.1.1������(w��)����ؓ(f��)�d���⡡287

8.1.2������ Spring Cloud �� Ribbon��(sh��)�F(xi��n)�͑�(h��)��ؓ(f��)�d����

��288

8.1.3����Ϣ��������(w��)��——��Ϣ���f�ď��Կɿ��ӡ�293

8.1.4����Ϣ��������(w��)���Ј�(ch��ng)��297

8.2��Spring Cloud Streams——ͨ��Spring ���B(t��i)ϵ�y(t��ng)�Ę���

��297

8.3�����ϵ�푑�(y��ng)ʽ���̡�304

8.3.1��Spring Cloud Data Flow��305

8.3.2������ Spring Cloud Function��*��(x��)���ȑ�(y��ng)�ó���

��306

8.3.3��Spring Cloud——���锵(sh��)��(j��)�� һ���ֵĺ���(sh��)��311

8.4������ RSocket �ĵ����t��푑�(y��ng)ʽ ��Ϣ���f��315

8.4.1����(du��)�� RSocket �c Reactor-Netty��315

8.4.2��Java �е� RSocket��316

8.4.3����(du��)�� RSocket �� gRPC��321

8.4.4��Spring ����е� RSocket��322

8.4.5����������е� RSocket��324

8.4.6��RSocket �Y(ji��)��324

8.5���Y(ji��)��325

�ڡ�9 �� �y(c��)ԇ푑�(y��ng)ʽ��(y��ng)�ó���326

9.1����ʲô푑�(y��ng)ʽ���y�Ԝy(c��)ԇ��326

9.2��ʹ�� StepVerifier �y(c��)ԇ푑�(y��ng)ʽ����327

9.2.1��StepVerifier Ҫ�c(di��n)��327

9.2.2��ʹ�� StepVerifier �M(j��n)�� �߼�(j��)�y(c��)ԇ��330

9.2.3��̎��̓�M�r(sh��)�g��331

9.2.4���(y��n)�C푑�(y��ng)ʽ�����ġ�333

9.3���y(c��)ԇ WebFlux��334

9.3.1��ʹ�� WebTestClient �y(c��)ԇ ��������334

9.3.2���y(c��)ԇ WebSocket��339

9.4���Y(ji��)��342

�ڡ�10 �� *�����l(f��)������343

10.1��DevOps �Ѻ��͑�(y��ng)�ó������Ҫ�ԡ�343

10.2���O(ji��n)��푑�(y��ng)ʽ Spring ��(y��ng)�ó���345

10.2.1��Spring Boot Actuator��346

10.2.2��Micrometer��ǧ�ֳߣ���354

10.2.3���O(ji��n)��푑�(y��ng)ʽ����356

10.2.4������ Spring Boot Sleuth �� �ֲ�ʽ��ۙ��359

10.2.5������ Spring Boot Admin 2.x��Ư�� UI��361

10.3�������ƶˡ�363

10.3.1������ Amazon Web ����(w��)��365

10.3.2������ Google Kubernetes���桡365

10.3.3������ Pivotal Cloud Foundry��365

10.3.4������ Kubernetes �� Istio ��FaaS ƽ�_(t��i) Knative

��369

10.3.5����(du��)�ɹ�����(y��ng)�ó���Ľ��h��369

10.4���Y(ji��)��370



































չ�_(k��i)ȫ��

Spring푑�(y��ng)ʽ���� ���ߺ�(ji��n)��

�W�R·����(k��)����Oleh Dokuka�� �Y��ܛ�����̎���Pivotal��˾Java Champion������Project Reactor��Spring��ܵ���Ҫؕ�I(xi��n)������Ϥ���(n��i)���C(j��)�������ᳫʹ��Project Reactor�M(j��n)���ճ�푑�(y��ng)ʽ����������(j��ng)����ܛ���_(k��i)�l(f��)�Ќ�(sh��)�H��(y��ng)��Spring��ܺ�Project Reactor���dz��˽�ʹ���@Щ���g(sh��)��(g��u)��푑�(y��ng)ʽϵ�y(t��ng)�ķ����� ����?du��)?��Ɲ��˹����Igor Lozynskyi�� �Y��Java�_(k��i)�l(f��)�ˆT�����мs10���Javaƽ�_(t��i)��(j��ng)�(y��n)����Ҫ�������_(k��i)�l(f��)�ɿ�������s���ٶȘO���ϵ�y(t��ng)�������ڴ��������ܛ���_(k��i)�l(f��)�п���׃�����(xi��ng)Ŀ��

���o(w��)�u(p��ng)Փ����
��(sh��)�����]
����픲�
�ЈD�W(w��ng)
�ھ�(xi��n)�ͷ�