Muutke küpsiste eelistusi

E-raamat: Spring 5 Recipes: A Problem-Solution Approach

  • Formaat: EPUB+DRM
  • Ilmumisaeg: 11-Oct-2017
  • Kirjastus: APress
  • Keel: eng
  • ISBN-13: 9781484227909
  • Formaat - EPUB+DRM
  • Hind: 44,45 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: EPUB+DRM
  • Ilmumisaeg: 11-Oct-2017
  • Kirjastus: APress
  • Keel: eng
  • ISBN-13: 9781484227909

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Solve all your Spring 5 problems using complete and real-world code examples. When you start a new project, youll be able to copy the code and configuration files from this book, and then modify them for your needs. This can save you a great deal of work over creating a project from scratch.

The recipes in Spring 5 Recipes cover Spring fundamentals such as Spring IoC container, Spring AOP/ AspectJ, and more. Other recipes include Spring enterprise solutions for topics such as Spring Java EE integration, Spring Integration, Spring Batch, Spring Remoting, messaging, transactions, and working with big data and the cloud using Hadoop and MongoDB. Finally, Spring web recipes cover Spring MVC, other dynamic scripting, integration with the popular Grails Framework (and Groovy), REST/web services, and more.

Youll also see recipes on new topics such as Spring Framework 5, reactive Spring, Spring 5 microservices, the functional web framework and much more.

This book













builds upon the best-selling success of the previous editions and focuses on the latest Spring Framework features for building enterprise Java applications. 

What You'll Learn









Get re-usable code recipes and snippets for core Spring, annotations and other development tools

Access Spring MVC for web development

Work with Spring REST and microservices for web services development and integration into your enterprise Java applications

Use Spring Batch, NoSQL and big data for building and integrating various cloud computing services and resources

Integrate Java Enterprise Edition and other Java APIs for use in Spring

Use Grails code and much more







Who This Book Is For

Experienced Java and Spring programmers.  
About the Authors xxxi
About the Technical Reviewer xxxiii
Acknowledgments xxxv
Introduction xxxvii
Chapter 1 Spring Development Tools
1(26)
1-1 Build a Spring Application with the Spring Tool Suite
1(9)
Problem
1(1)
Solution
1(1)
How It Works
2(8)
1-2 Build a Spring Application with the IntelliJ IDE
10(10)
Problem
10(1)
Solution
10(1)
How It Works
10(10)
1-3 Build a Spring Application with the Maven Command-Line Interface
20(2)
Problem
20(1)
Solution
21(1)
How It Works
21(1)
1-4 Build a Spring Application with the Gradle Wrapper
22(1)
Problem
22(1)
Solution
22(1)
How It Works
22(1)
1-5 Build a Spring Application with the Gradle Command-Line Interface
23(2)
Problem
23(1)
Solution
23(1)
How It Works
24(1)
1-6 Build a Spring Application with the Gradle Wrapper
25(2)
Problem
25(1)
Solution
25(1)
How It Works
25(1)
Summary
26(1)
Chapter 2 Spring Core Tasks
27(90)
2-1 Use a Java Config to Configure POJOs
28(6)
Problem
28(1)
Solution
28(1)
How It Works
28(6)
2-2 Create POJOs by Invoking a Constructor
34(3)
Problem
34(1)
Solution
34(1)
How It Works
34(3)
2-3 Use POJO References and Autowiring to Interact with Other POJOs
37(7)
Problem
37(1)
Solution
37(1)
How It Works
37(7)
2-4 Autowire POJOs with the @Resource and @Inject Annotations
44(2)
Problem
44(1)
Solution
44(1)
How It Works
44(2)
2-5 Set a POJO's Scope with the @Scope Annotation
46(3)
Problem
46(1)
Solution
46(1)
How It Works
47(2)
2-6 Use Data from External Resources (Text Files, XML Files, Properties Files, or Image Files)
49(5)
Problem
49(1)
Solution
50(1)
How It Works
50(4)
2-7 Resolve 118N Text Messages for Different Locales in Properties Files
54(2)
Problem
54(1)
Solution
54(1)
How It Works
54(2)
2-8 Customize POJO Initialization and Destruction with Annotations
56(5)
Problem
56(1)
Solution
57(1)
How It Works
57(4)
2-9 Create Post-Processors to Validate and Modify POJOs
61(3)
Problem
61(1)
Solution
61(1)
How It Works
61(3)
2-10 Create POJOs with a Factory (Static Method, Instance Method, Spring's FactoryBean)
64(5)
Problem
64(1)
Solution
64(1)
How It Works
64(5)
2-11 Use Spring Environments and Profiles to Load Different Sets of POJOs
69(2)
Problem
69(1)
Solution
69(1)
How It Works
69(2)
2-12 Make POJOs Aware of Spring's IoC Container Resources
71(2)
Problem
71(1)
Solution
71(2)
How It Works
73(1)
2-13 Use Aspect-Oriented Programming with Annotations
73(8)
Problem
73(1)
Solution
73(1)
How It Works
74(7)
2-14 Access the Join Point Information
81(2)
Problem
81(1)
Solution
81(1)
How It Works
82(1)
2-15 Specify Aspect Precedence with the @Order Annotation
83(2)
Problem
83(1)
Solution
83(1)
How It Works
83(2)
2-16 Reuse Aspect Pointcut Definitions
85(2)
Problem
85(1)
Solution
85(1)
How It Works
85(2)
2-17 Write AspectJ Pointcut Expressions
87(5)
Problem
87(1)
Solution
87(1)
How It Works
87(5)
2-18 Use AOP for introductions for POJOs
92(2)
Problem
92(1)
Solution
92(1)
How It Works
92(2)
2-19 Introduce States to Your POJOs with AOP
94(3)
Problem
94(1)
Solution
94(1)
How It Works
95(2)
2-20 Use Load-Time Weaving AspectJ Aspects in Spring
97(4)
Problem
97(1)
Solution
97(1)
How It Works
97(4)
2-21 Configure AspectJ Aspects in Spring
101(2)
Problem
101(1)
Solution
101(1)
How It Works
102(1)
2-22 Inject POJOs into Domain Objects with AOP
103(2)
Problem
103(1)
Solution
103(1)
How It Works
104(1)
2-23 Applying Concurrency with Spring and TaskExecutors
105(7)
Problem
105(1)
Solution
105(1)
How It Works
106(6)
2-24 Communicate Application Events Between POJOs
112(5)
Problem
112(1)
Solution
112(1)
How It Works
112(3)
Summary
115(2)
Chapter 3 Spring MVC
117(66)
3-1 Develop a Simple Web Application with Spring MVC
117(12)
Problem
117(1)
Solution
117(2)
How It Works
119(10)
3-2 Map Requests with @RequestMapping
129(4)
Problem
129(1)
Solution
129(1)
How It Works
129(4)
3-3 Intercept Requests with Handler Interceptors
133(3)
Problem
133(1)
Solution
133(1)
How It Works
134(2)
3-4 Resolve User Locales
136(3)
Problem
136(1)
Solution
137(1)
How It Works
137(1)
Changing a User's Locale
138(1)
3-5 Externalize Locale-Sensitive Text Messages
139(2)
Problem
139(1)
Solution
139(1)
How It Works
140(1)
3-6 Resolve Views by Name
141(3)
Problem
141(1)
Solution
141(1)
How It Works
141(3)
3-7 Use Views and Content Negotiation
144(2)
Problem
144(1)
Solution
144(1)
How It Works
144(2)
3-8 Map Exceptions to Views
146(3)
Problem
146(1)
Solution
146(1)
How It Works
147(2)
3-9 Handle Forms with Controllers
149(13)
Problem
149(1)
Solution
149(1)
How It Works
149(13)
3-10 Handle Multipage Forms with Wizard Form Controllers
162(11)
Problem
162(1)
Solution
162(1)
How It Works
163(10)
3-11 Use Bean Validation with Annotations (JSR-303)
173(2)
Problem
173(1)
Solution
173(1)
How It Works
174(1)
3-12 Create Excel and PDF Views
175(8)
Problem
175(1)
Solution
175(1)
How It Works
176(5)
Summary
181(2)
Chapter 4 Spring REST
183(26)
4-1 Publish XML with REST Services
183(8)
Problem
183(1)
Solution
183(1)
How It Works
184(7)
4-2 Publish JSON with REST Services
191(5)
Problem
191(1)
Solution
191(1)
How It Works
192(4)
4-3 Access a REST Service with Spring
196(4)
Problem
196(1)
Solution
196(1)
How It Works
196(4)
4-4 Publish RSS and Atom Feeds
200(9)
Problem
200(1)
Solution
200(1)
How It Works
200(8)
Summary
208(1)
Chapter 5 Spring MVC: Async Processing
209(58)
5-1 Handle Requests Asynchronously with Controllers and TaskExecutor
209(8)
Problem
209(1)
Solution
209(1)
How It Works
210(7)
5-2 Use Response Writers
217(5)
Problem
217(1)
Solution
217(1)
How It Works
217(5)
5-3 Use Asynchronous Interceptors
222(2)
Problem
222(1)
Solution
222(1)
How It Works
222(2)
5-4 Use WebSockets
224(9)
Problem
224(1)
Solution
224(1)
How It Works
225(8)
5-5 Develop a Reactive Application with Spring WebFlux
233(11)
Problem
233(1)
Solution
233(2)
How It Works
235(9)
5-6 Handle Forms with Reactive Controllers
244(13)
Problem
244(1)
Solution
244(1)
How It Works
244(13)
5-7 Publish and Consume JSON with Reactive REST Services
257(2)
Problem
257(1)
Solution
257(1)
How It Works
257(2)
5-8 Use an Asynchronous Web Client
259(5)
Problem
259(1)
Solution
259(1)
How It Works
260(4)
5-9 Write a Reactive Handler Function
264(3)
Problem
264(1)
Solution
264(1)
How It Works
264(2)
Summary
266(1)
Chapter 6 Spring Social
267(30)
6-1 Set Up Spring Social
267(2)
Problem
267(1)
Solution
267(1)
How It Works
267(2)
6-2 Connect to Twitter
269(5)
Problem
269(1)
Solution
269(1)
How It Works
269(5)
6-3 Connect to Facebook
274(3)
Problem
274(1)
Solution
274(1)
How It Works
274(3)
6-4 Show the Service Provider's Connection Status
277(5)
Problem
277(1)
Solution
277(1)
How It Works
277(5)
6-5 Use the Twitter API
282(2)
Problem
282(1)
Solution
282(1)
How It Works
283(1)
6-6 Use a Persistent Users Connection Repository
284(2)
Problem
284(1)
Solution
284(1)
How It Works
284(2)
6-7 Integrate Spring Social and Spring Security
286(11)
Problem
286(1)
Solution
286(1)
How It Works
286(9)
Summary
295(2)
Chapter 7 Spring Security
297(48)
7-1 Secure URL Access
298(5)
Problem
298(1)
Solution
298(1)
How It Works
299(4)
7-2 Log In to Web Applications
303(7)
Problem
303(1)
Solution
303(1)
How It Works
303(7)
7-3 Authenticate Users
310(9)
Problem
310(1)
Solution
310(1)
How It Works
310(9)
7-4 Make Access Control Decisions
319(8)
Problem
319(1)
Solution
319(1)
How It Works
320(7)
7-5 Secure Method Invocations
327(3)
Problem
327(1)
Solution
327(1)
How It Works
327(3)
7-6 Handle Security in Views
330(2)
Problem
330(1)
Solution
330(1)
How It Works
330(2)
7-7 Handle Domain Object Security
332(8)
Problem
332(1)
Solution
332(1)
How It Works
332(8)
7-8 Add Security to a WebFlux Application
340(5)
Problem
340(1)
Solution
340(1)
How It Works
340(4)
Summary
344(1)
Chapter 8 Spring Mobile
345(16)
8-1 Detect Devices Without Spring Mobile
345(5)
Problem
345(1)
Solution
345(1)
How It Works
345(5)
8-2 Detect Devices with Spring Mobile
350(2)
Problem
350(1)
Solution
350(1)
How It Works
350(2)
8-3 Use Site Preferences
352(2)
Problem
352(1)
Solution
352(1)
How It Works
352(2)
8-4 Use the Device Information to Render Views
354(4)
Problem
354(1)
Solution
354(1)
How It Works
354(4)
8-5 Implement Site Switching
358(3)
Problem
358(1)
Solution
358(1)
How It Works
358(2)
Summary
360(1)
Chapter 9 Data Access
361(54)
Problems with Direct JDBC
362(1)
Setting Up the Application Database
362(1)
Understanding the Data Access Object Design Pattern
363(1)
Implementing the DAO with JDBC
364(2)
Configuring a Data Source in Spring
366(2)
Running the DAO
368(1)
Taking It a Step Further
368(1)
9-1 Use a JDBC Template to Update a Database
368(5)
Problem
368(1)
Solution
369(1)
How It Works
369(4)
9-2 Use a JDBC Template to Query a Database
373(6)
Problem
373(1)
Solution
374(1)
How It Works
374(5)
9-3 Simplify JDBC Template Creation
379(3)
Problem
379(1)
Solution
379(1)
How It Works
379(3)
9-4 Use Named Parameters in a JDBC Template
382(2)
Problem
382(1)
Solution
382(1)
How It Works
382(2)
9-5 Handle Exceptions in the Spring JDBC Framework
384(5)
Problem
384(1)
Solution
384(1)
How It Works
385(4)
9-6 Avoid Problems by Using ORM Frameworks Directly
389(9)
Problem
389(1)
Solution
389(1)
How It Works
389(9)
9-7 Configure ORM Resource Factories in Spring
398(8)
Problem
398(1)
Solution
399(1)
How It Works
399(7)
9-8 Persist Objects with Hibernate's Contextual Sessions
406(3)
Problem
406(1)
Solution
406(1)
How It Works
407(2)
9-9 Persist Objects with JPA's Context Injection
409(3)
Problem
409(1)
Solution
409(1)
How It Works
409(3)
9-10 Simplify JPA with Spring Data JPA
412(3)
Problem
412(1)
Solution
412(1)
How It Works
413(1)
Summary
414(1)
Chapter 10 Spring Transaction Management
415(32)
10-1 Avoid Problems with Transaction Management
416(7)
Manage Transactions with JDBC Commit and Rollback
422(1)
10-2 Choose a Transaction Manager Implementation
423(1)
Problem
423(1)
Solution
423(1)
How It Works
423(1)
10-3 Manage Transactions Programmatically with the Transaction Manager API
424(3)
Problem
424(1)
Solution
425(1)
How It Works
425(2)
10-4 Manage Transactions Programmatically with a Transaction Template
427(3)
Problem
427(1)
Solution
427(1)
How It Works
427(3)
10-5 Manage Transactions Declaratively with the @Transactional Annotation
430(1)
Problem
430(1)
Solution
430(1)
How It Works
430(1)
10-6 Set the Propagation Transaction Attribute
431(5)
Problem
431(1)
Solution
431(1)
How It Works
432(4)
10-7 Set the Isolation Transaction Attribute
436(8)
Problem
436(1)
Solution
436(1)
How It Works
437(7)
10-8 Set the Rollback Transaction Attribute
444(1)
Problem
444(1)
Solution
444(1)
How It Works
444(1)
10-9 Set the Timeout and Read-Only Transaction Attributes
444(1)
Problem
444(1)
Solution
445(1)
How It Works
445(1)
10-10 Manage Transactions with Load-Time Weaving
445(2)
Problem
445(1)
Solution
445(1)
How It Works
446(1)
Summary
446(1)
Chapter 11 Spring Batch
447(36)
Runtime Metadata Model
448(1)
11-1 Set Up Spring Batch's Infrastructure
449(4)
Problem
449(1)
Solution
449(1)
How It Works
449(4)
11-2 Read and Write Data
453(7)
Problem
453(1)
Solution
453(1)
How It Works
453(7)
11-3 Write a Custom ItemWriter and ItemReader
460(3)
Problem
460(1)
Solution
460(1)
How It Works
460(3)
11-4 Process Input Before Writing
463(2)
Problem
463(1)
Solution
463(1)
How It Works
463(2)
11-5 Achieve Better Living Through Transactions
465(2)
Problem
465(1)
Solution
465(1)
How It Works
465(2)
11-6 Retry
467(3)
Problem
467(1)
Solution
467(1)
How It Works
467(3)
11-7 Control Step Execution
470(4)
Problem
470(1)
Solution
470(1)
How It Works
471(3)
11-8 Launch a Job
474(5)
Problem
474(1)
Solution
475(1)
How It Works
475(4)
11-9 Parameterize a Job
479(4)
Problem
479(1)
Solution
479(1)
How It Works
479(2)
Summary
481(2)
Chapter 12 Spring with NoSQL
483(58)
12-1 Use MongoDB
483(14)
Problem
483(1)
Solution
483(1)
How It Works
484(13)
12-2 Use Redis
497(6)
Problem
497(1)
Solution
497(1)
How It Works
497(6)
12-3 Use Neo4j
503(18)
Problem
503(1)
Solution
503(1)
How It Works
503(18)
12-4 Use Couchbase
521(20)
Problem
521(1)
Solution
521(1)
How It Works
521(19)
Summary
540(1)
Chapter 13 Spring Java Enterprise Services and Remoting Technologies
541(74)
13-1 Register Spring POJOs as JMX MBeans
541(16)
Problem
541(1)
Solution
542(1)
How It Works
542(15)
13-2 Publish and Listen to JMX Notifications
557(2)
Problem
557(1)
Solution
557(1)
How It Works
557(2)
13-3 Access Remote JMX MBeans in Spring
559(5)
Problem
559(1)
Solution
559(1)
How It Works
560(4)
13-4 Send E-mail with Spring's E-mail Support
564(8)
Problem
564(1)
Solution
564(1)
How It Works
564(8)
13-5 Schedule Tasks with Spring's Quartz Support
572(5)
Problem
572(1)
Solution
572(1)
How It Works
572(5)
13-6 Schedule Tasks with Spring's Scheduling
577(3)
Problem
577(1)
Solution
577(1)
How It Works
577(3)
13-7 Expose and Invoke Services Through RMI
580(4)
Problem
580(1)
Solution
580(1)
How It Works
581(3)
13-8 Expose and Invoke Services Through HTTP
584(4)
Problem
584(1)
Solution
585(1)
How It Works
585(3)
13-9 Expose and Invoke SOAP Web Services with JAX-WS
588(6)
Problem
588(1)
Solution
588(1)
How It Works
588(6)
13-10 Use Contract-First SOAP Web Services
594(5)
Problem
594(1)
Solution
594(1)
How It Works
594(5)
13-11 Expose and Invoke SOAP Web Services with Spring-WS
599(7)
Problem
599(1)
Solution
599(7)
13-12 Develop SOAP Web Services with Spring-WS and XML Marshalling
606(9)
Problem
606(1)
Solution
607(1)
How It Works
607(6)
Summary
613(2)
Chapter 14 Spring Messaging
615(40)
14-1 Send and Receive JMS Messages with Spring
615(12)
Problem
615(1)
Solution
616(1)
How It Works
616(11)
14-2 Convert JMS Messages
627(3)
Problem
627(1)
Solution
627(1)
How It Works
627(3)
14-3 Manage JMS Transactions
630(1)
Problem
630(1)
Solution
630(1)
How It Works
630(1)
14-4 Create Message-Driven POJOs in Spring
631(7)
Problem
631(1)
Solution
631(1)
How It Works
632(6)
14-5 Cache and Pool JMS Connections
638(1)
Problem
638(1)
Solution
638(1)
How It Works
638(1)
14-6 Send and Receive AMQP Messages with Spring
639(7)
Problem
639(1)
Solution
639(1)
How It Works
639(7)
14-7 Send and Receive Messages with Spring Kafka
646(9)
Problem
646(1)
Solution
646(1)
How It Works
646(8)
Summary
654(1)
Chapter 15 Spring Integration
655(36)
15-1 Integrate One System with Another Using EAI
655(3)
Problem
655(1)
Solution
655(1)
How It Works
655(3)
15-2 Integrate Two Systems Using JMS
658(4)
Problem
658(1)
Solution
658(1)
How It Works
658(4)
15-3 Interrogate Spring Integration Messages for Context Information
662(3)
Problem
662(1)
Solution
662(1)
How It Works
662(3)
15-4 Integrate Two Systems Using a File System
665(2)
Problem
665(1)
Solution
665(1)
How It Works
666(1)
15-5 Transform a Message from One Type to Another
667(4)
Problem
667(1)
Solution
668(1)
How It Works
668(3)
15-6 Handle Errors Using Spring Integration
671(3)
Problem
671(1)
Solution
671(1)
How It Works
671(3)
15-7 Fork Integration Control: Splitters and Aggregators
674(4)
Problem
674(1)
Solution
674(1)
How It Works
674(4)
15-8 Implement Conditional Routing with Routers
678(1)
Problem
678(1)
Solution
678(1)
How It Works
678(1)
15-9 Stage Events Using Spring Batch
679(3)
Problem
679(1)
Solution
679(1)
How It Works
679(3)
15-10 Use Gateways
682(9)
Problem
682(1)
Solution
682(1)
How It Works
682(7)
Summary
689(2)
Chapter 16 Spring Testing
691(40)
16-1 Create Tests with JUnit and TestNG
692(4)
Problem
692(1)
Solution
692(1)
How It Works
692(4)
16-2 Create Unit Tests and Integration Tests
696(9)
Problem
696(1)
Solution
696(1)
How It Works
697(8)
16-3 Implement Unit Testing for Spring MVC Controllers
705(2)
Problem
705(1)
Solution
705(1)
How It Works
706(1)
16-4 Manage Application Contexts in Integration Tests
707(5)
Problem
707(1)
Solution
707(1)
How It Works
708(4)
16-5 Inject Test Fixtures into Integration Tests
712(2)
Problem
712(1)
Solution
712(1)
How It Works
712(2)
16-6 Manage Transactions in Integration Tests
714(5)
Problem
714(1)
Solution
714(1)
How It Works
715(4)
16-7 Access a Database in Integration Tests
719(2)
Problem
719(1)
Solution
719(1)
How It Works
719(2)
16-8 Use Spring's Common Testing Annotations
721(2)
Problem
721(1)
Solution
722(1)
How It Works
722(1)
16-9 Implement Integration Tests for Spring MVC Controllers
723(3)
Problem
723
Solution
723(1)
How It Works
723(3)
16-10 Write Integration Tests for REST Clients
726(5)
Problem
726(1)
Solution
726(1)
How It Works
726(4)
Summary
730(1)
Chapter 17 Grails
731(44)
17-1 Get and Install Grails
731(1)
Problem
731(1)
Solution
731(1)
How It Works
731(1)
17-2 Create a Grails Application
732(5)
Problem
732(1)
Solution
732(1)
How It Works
732(5)
17-3 Get Grails Plug-Ins
737(1)
Problem
737(1)
Solution
737(1)
How It Works
738(1)
17-4 Develop, Produce, and Test in Grails Environments
738(2)
Problem
738(1)
Solution
738(1)
How It Works
739(1)
17-5 Create an Application's Domain Classes
740(3)
Problem
740(1)
Solution
740(1)
How It Works
741(2)
17-6 Generate CRUD Controllers and Views for an Application's Domain Classes
743(4)
Problem
743(1)
Solution
743(1)
How It Works
743(4)
17-7 Implement Internationalization (l18n) for Message Properties
747(3)
Problem
747(1)
Solution
747(1)
How It Works
747(3)
17-8 Change Permanent Storage Systems
750(3)
Problem
750(1)
Solution
750(1)
How It Works
750(3)
17-9 Customize Log Output
753(2)
Problem
753(1)
Solution
753(1)
How It Works
753(2)
17-10 Run Unit and Integration Tests
755(6)
Problem
755(1)
Solution
755(1)
How It Works
755(6)
17-11 Use Custom Layouts and Templates
761(3)
Problem
761(1)
Solution
761(1)
How It Works
761(3)
17-12 Use GORM Queries
764(2)
Problem
764(1)
Solution
764(1)
How It Works
764(2)
17-13 Create Custom Tags
766(2)
Problem
766(1)
Solution
766(1)
How It Works
766(2)
17-14 Add Security
768(7)
Problem
768(1)
Solution
768(1)
How It Works
768(4)
Summary
772(3)
Appendix A Deploying to the Cloud
775(20)
A-1 Sign Up for CloudFoundry
775(6)
Problem
775(1)
Solution
775(1)
How It Works
776(5)
A-2 Install and Use the CloudFoundry CLI
781(3)
Problem
781(1)
Solution
781(1)
How It Works
781(3)
A-3 Deploy a Spring MVC Application
784(10)
Problem
784(1)
Solution
784(1)
How It Works
784(10)
A-4 Remove an Application
794(1)
Problem
794(1)
Solution
794(1)
How It Works
794(1)
Summary
794(1)
Appendix B Caching
795(26)
B-1 Implement Caching with Ehcache
795(5)
Problem
795(1)
Solution
795(1)
How It Works
795(5)
B-2 Cache with Spring's Cache Abstraction
800(3)
Problem
800(1)
Solution
800(1)
How It Works
801(2)
B-3 Implement Declarative Caching with AOP
803(2)
Problem
803(1)
Solution
803(1)
How It Works
803(2)
B-4 Configure a Custom KeyGenerator
805(2)
Problem
805(1)
Solution
805(1)
How It Works
805(2)
B-5 Add and Remove Objects from the Cache
807(9)
Problem
807(1)
Solution
807(1)
How It Works
807(9)
B-6 Synchronize Caching with a Transactional Resource
816(3)
Problem
816(1)
Solution
816(1)
How It Works
817(2)
B-7 Use Redis as a Cache Provider
819(2)
Problem
819(1)
Solution
819(1)
How It Works
819(1)
Summary
820(1)
Index 821
Marten Deinum is a submitter on the open source Spring Framework project. He is also a Java/software consultant working for Conspect. He has developed and architected software, primarily in Java, for small and large companies. He is an enthusiastic open source user and longtime fan, user and advocate of the Spring Framework. He has held a number of positions including Software Engineer, Development Lead, Coach, and also as a Java and Spring Trainer. 

Daniel Rubio is an independent consultant with over 10 years of experience in enterprise and web-based software. More recently, Daniel is founder and technical lead at MashupSoft.com.  He has co-authored the best selling Spring Recipes as well as other books for Apress Media, LLC.  Daniel's expertise lies in Java, Spring, Python, Django, JavaScript/CSS and HTML.  

Josh Long is the Spring Developer Advocate at Pivotal. Josh is a Java Champion, author of 5 books













(including O'Reilly's upcoming "Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry") and 3 best-selling video trainings (including "Building Microservices with Spring Boot Livelessons" w/ Phil Webb), and an open-source contributor (Spring Boot, Spring Integration, Spring Cloud, Activiti and Vaadin).