<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;">&NewLine;<div style&equals;"font-family&colon; calibri&comma; sans-serif&semi; text-align&colon; justify&semi;">&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">In any application or system there may be some data such type which is used frequently in the processing the request for any client&period; If such data we will be fetch from the database then it should be impact the performance of the system&period; Spring Framework provides support for caching means we can cache the frequently used data in the application at startup time&period;<&sol;div>&NewLine;<h2><b>Spring Cache<&sol;b><&sol;h2>&NewLine;<ul style&equals;"font-size&colon; 13pt&semi;">&NewLine;<li>The Spring Framework provides support for transparently adding caching to an application&period; At its core&comma; the abstraction applies caching to ecutions based on the information available in the cache&period;<&sol;li>&NewLine;<li>This support is available from Spring Framework 3&period;1 and there is significant improvement provided in the Spring 4&period;1&period;<&sol;li>&NewLine;<li>This is an abstract framework where Spring only provides the layer where other third party caching implementations can be easily plugged for storing data means cache storage is not implemented by Spring&comma; where as enabling and caching is supported by spring out of the box&period;<&sol;li>&NewLine;<li>Caching is supported for the methods and it works well if the methods return the same result for the given input for the multiple invocations&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h2><b>Supported cache providers in Spring<&sol;b><&sol;h2>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">As we know that the actual implementations of the cache is by third party library and Spring provides only the abstract layer for enabling that specific cache implementation to store the cache data&period; So there are following cache supported by the Spring&period;<&sol;div>&NewLine;<ul style&equals;"font-size&colon; 13pt&semi;">&NewLine;<li>Generic<&sol;li>&NewLine;<li>JCache &lpar;JSR-107&rpar;<&sol;li>&NewLine;<li>EhCache 2&period;x<&sol;li>&NewLine;<li>Hazelcast<&sol;li>&NewLine;<li>Infinispan<&sol;li>&NewLine;<li>Couchbase<&sol;li>&NewLine;<li>Redis<&sol;li>&NewLine;<li>Caffeine<&sol;li>&NewLine;<li>Guava<&sol;li>&NewLine;<li>Simple<&sol;li>&NewLine;<&sol;ul>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Generic&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Generic caching is used if the context defines at least one org&period;springframework&period;cache&period;Cache bean&comma; a CacheManager wrapping them is configured&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">JCache &lpar;JSR-107&rpar;&colon;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">JCache is bootstrapped via the presence of a javax&period;cache&period;spi&period;CachingProvider on the classpath &lpar;i&period;e&period; a JSR-107 compliant caching library&rpar;&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>EhCache 2&period;x&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">EhCache 2&period;x is used if a file named ehcache&period;xml can be found at the root of the classpath&period; If EhCache 2&period;x and such file is present it is used to bootstrap the cache manager&period; An alternate configuration file can be providing a well using&colon;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">spring&period;cache&period;ehcache&period;config&equals;classpath&colon;config&sol;another-config&period;xml<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Hazelcast&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Both com&period;hazelcast&colon;hazelcast and com&period;hazelcast&colon;hazelcast-spring should be added to the project to enable support for Hazelcast&period; Since there is a default hazelcast&period;xml configuration file at the root of the classpath&comma; it is used to automatically configure the underlying HazelcastInstance&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Infinispan&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Add the org&period;infinispan&colon;infinispan-spring4-embedded dependency to enable support for Infinispan&period; There is no default location that Infinispan uses to look for a config file so if you don’t specify anything it will bootstrap on a hardcoded default&period; You can set the spring&period;cache&period;infinispan&period;config property to use the provided infinispan&period;xml configuration instead&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Couchbase&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Add the java-client and couchbase-spring-cache dependencies and make sure that you have setup at least aspring&period;couchbase&period;bootstrap-hosts property&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Redis&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Add the spring-boot-starter-data-redis and make sure it is configured properly &lpar;by default&comma; a redis instance with the default settings is expected on your local box&rpar;&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Caffeine&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Simply add the com&period;github&period;ben-manes&period;caffeine&colon;caffeine dependency to enable support for Caffeine&period; You can customize how caches are created in different ways&comma; see application&period;properties for an example and the documentation for more details&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Guava&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Spring Boot does not provide any dependency management for Guava so you’ll have to add the com&period;google&period;guava&colon;guavadependency with a version&period; You can customize how caches are created in different ways&semi; see application&period;properties for an example and the documentation for more details&period;<&sol;div>&NewLine;<div class&equals;"separator" style&equals;"clear&colon; both&semi; text-align&colon; center&semi;"><img src&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;wp-content&sol;uploads&sol;2016&sol;08&sol;introduction-to-spring-framework-cache&period;jpg" border&equals;"0" &sol;><&sol;div>&NewLine;<h2><b>Enable Caching<&sol;b><&sol;h2>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>1&period; &commat;EnableCaching<&sol;b> to enable caching because caching in spring is not enabled by default&period; The caching feature can be declaratively enabled by simply adding the &commat;EnableCaching annotation to any of the configuration classes&period;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;SpringBootApplication &NewLine;&commat;EnableCaching &NewLine;public class SpringBootCacheApplication &lbrace; &NewLine; &NewLine; public static void main&lpar;String&lbrack;&rsqb; args&rpar; &lbrace; &NewLine; SpringApplication&period;run&lpar;SpringBootCacheApplication&period;class&comma; args&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">In the XML we can you use following tag for enable caching&period;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&lt&semi;cache&colon;annotation-driven &sol;&gt&semi; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>2&period; Cache Configurations<&sol;b> – Configure the cache manager where the backing data is stored and retrieved for the quick response&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>3&period; Caching declaration <&sol;b>– Identify the methods that have to be cached and define the caching policy&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<h2><b>Use Caching With Annotations<&sol;b><&sol;h2>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">After enabling the cache we can use following list of declarative annotations&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<ul style&equals;"font-size&colon; 13pt&semi;">&NewLine;<li>&commat;Cacheable<&sol;li>&NewLine;<li>&commat;CacheEvict<&sol;li>&NewLine;<li>&commat;CachePut<&sol;li>&NewLine;<li>&commat;Caching<&sol;li>&NewLine;<li>&commat;CacheConfig<&sol;li>&NewLine;<&sol;ul>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>&commat;Cacheable&colon; <&sol;b>It is one of the most important and common annotation for caching the requests&period; If you annotate a method with &commat;Cacheable&comma; if multiple requests are received by the application&comma; then this annotation will not execute the method multiple times&comma; instead it will send the result from the cached storage&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">The simplest way to enable caching behavior for a method is to demarcate it with &commat;Cacheable and parameterize it with the name of the cache where the results would be stored&colon;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;Cacheable&lpar;value&equals;"cities"&rpar; &NewLine;public List&lt&semi;City&gt&semi; findAllCity&lpar;&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">The findAllCity&lpar;&rpar; call will first checks the cache cities before actually invoking the method and then caching the result&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Spring framework also supports multiple caches to be passed as parameters&colon;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;Cacheable&lpar;value&equals;&lbrace;"cities"&comma;"city-list"&rcub;&rpar; &NewLine;public List&lt&semi;City&gt&semi; findAllCity&lpar;&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>&commat;CacheEvict&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">If we annotate all methods with<b> &commat;Cacheable<&sol;b> then the size of cache may be some problem&period; <b>We don’t want to populate the cache with values that we don’t need often&period;<&sol;b> Caches can grow quite large&comma; quite fast&comma; and we could be holding on to a lot of stale or unused data&period; <b>&commat;CacheEvict <&sol;b>annotation is used for removing a single cache or clearing the entire cache from the cache storage so that fresh values can be loaded into the cache again&colon;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CacheEvict&lpar;value&equals;"cities"&comma; allEntries&equals;true&rpar; &NewLine;public List&lt&semi;City&gt&semi; findAllCity&lpar;&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Here allEntries indicated whether all the data in the cache has to be removed&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>&commat;CachePut&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut annotation helps for updating the cache with the latest execution without stopping the method execution&period; The difference between &commat;Cacheable and &commat;CachePut is that &commat;Cacheable will skip running the method&comma; whereas &commat;CachePut will actually run the method and then put its results in the cache&period;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut&lpar;value&equals;"cities"&rpar; &NewLine;public List&lt&semi;City&gt&semi; findAllCity&lpar;&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>&commat;Caching&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">What if you want to use multiple annotations of the same type for caching a method&quest; &commat;Caching annotation used for grouping multiple annotations of the same type together when one annotation is not sufficient for the specifying the suitable condition&period; For example&comma; you can put multiple &commat;CacheEvict or &commat;CachePut annotation inside &commat;Caching to narrow down your conditions as you need&period;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;Caching&lpar;evict &equals; &lbrace; &NewLine; &commat;CacheEvict&lpar;"cities"&rpar;&comma; &NewLine; &commat;CacheEvict&lpar;value&equals;"city-list"&comma; key&equals;"&num;city&period;name"&rpar; &rcub;&rpar; &NewLine;public List&lt&semi;City&gt&semi; findAllCity&lpar;&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>&commat;CacheConfig&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">You can annotate &commat;CacheConfig at the class level to avoid repeated mentioning in each method&period; For example&comma; in the class level you can provide the cache name and in the method you just annotate with &commat;Cacheable annotation&period;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CacheConfig&lpar;cacheNames&equals;&lbrace;"cities"&rcub;&rpar; &NewLine;public class CityMasterService &lbrace; &NewLine; &commat;Cacheable &NewLine; public List&lt&semi;City&gt&semi;&rpar; findAllCity&lpar;&rpar; &lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar;&rpar; cityRepository&period;findAll&lpar;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<p><b>Conditional Caching<&sol;b><&sol;p>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">Sometimes we don’t want to cache some result there are no need to cache&period; For example – reusing our example from the &commat;CachePut annotation – this will both execute the method as well as cache the results each and every time&colon;<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut&lpar;value&equals;"cities"&rpar; &NewLine;public List&lt&semi;City&gt&semi;&rpar; findAllCity&lpar;State state&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar;&rpar; cityRepository&period;findAll&lpar;state&period;getStateCode&lpar;&rpar;&rpar;&semi; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Condition Parameter&colon;<&sol;b><&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut&lpar;value&equals;"cities"&comma; condition&equals;"&num;state&period;stateName&equals;&equals;'UP'"&rpar; &NewLine;public ListList&lt&semi;City&gt&semi;&rpar; findAllCity&lpar;State state&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar;&rpar; cityRepository&period;findAll&lpar;state&period;getStateCode&lpar;&rpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut can be parameterized with a condition parameter that takes a SpEL expression to ensure that the results are cached based on evaluating that expression&period;<&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;"><b>Unless Parameter&colon;<&sol;b><&sol;div>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">We can also control the caching based on the output of the method rather than the input – via the unless parameter<&sol;div>&NewLine;<pre class&equals;"highlight" style&equals;"font-size&colon; 13pt&semi;">&commat;CachePut&lpar;value&equals;"cities"&comma; unless&equals;"&num;result&period;length&lpar;&rpar;&gt&semi;25"&rpar; &NewLine;public List&lt&semi;City&gt&semi;&rpar; findAllCity&lpar;String state&rpar;&lbrace; &NewLine; return &lpar;List&lt&semi;City&gt&semi;&rpar;&rpar; cityRepository&period;findAll&lpar;state&period;getStateCode&lpar;&rpar;&rpar;&semi; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<div style&equals;"font-size&colon; 13pt&semi;">The above annotation would cache only those cities of state that have minimum 25 cities in the state&period;<&sol;div>&NewLine;<div style&equals;"background-color&colon; &num;f2f9fc&semi; border-radius&colon; 3px&semi; border&colon; 1px solid &num;c9e6f2&semi; line-height&colon; 1&period;45&semi; padding&colon; 16px&semi;">&NewLine;<p><b>Spring Boot Related Topics<&sol;b><&sol;p>&NewLine;<ol style&equals;"text-align&colon; left&semi;">&NewLine;<li><b><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;introduction-to-spring-boot-a-spring-boot-complete-guide&sol;">Introduction to Spring Boo<&sol;a>t<&sol;b><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;essentials-key-components-and-internals-of-spring-boot-framework&sol;"><b>Essentials and Key Components of Spring Boot<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-cli-installation-and-hello-world-example&sol;"><b>Spring Boot CLI Installation and Hello World Example<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-initilizr-web-interface-and-examples&sol;"><b>Spring Boot Initializr Web Interface<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-initilizr-with-ides-via-spring-tool-suite&sol;"><b>Spring Boot Initializr With IDEs<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-initializr-with-spring-boot-cli&sol;"><b>Spring Boot Initializr With Spring Boot CLI<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;installing-spring-boot&sol;"><b>Installing Spring Boot<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;developing-your-first-spring-boot-application-hello-world&sol;"><b>Developing your first Spring Boot application<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;customizing-spring-boot-auto-configuration&sol;"><b>External Configurations for Spring Boot Applications<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;logging-configuration-in-spring-boot&sol;"><b>Logging Configuration in Spring Boot<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-with-spring-mvc-application&sol;"><b>Spring Boot and Spring MVC<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;working-with-sql-databases-in-spring-boot-application&sol;"><b>Working with SQL Databases and Spring Boot<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;mysql-configuration-with-spring-boot&sol;"><b>MySQL Configurations<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-data-jpa-using-in-spring-boot-application&sol;"><b>Spring Data JPA using Spring Boot Application<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-with-nosql-technologies&sol;"><b>Spring Boot with NoSQL technologies<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-cache-tutorial&sol;"><b>Spring Cache Tutorial<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-security-tutorial-using-spring-boot&sol;"><b>Spring Security Tutorial with Spring Boot<&sol;b><&sol;a><&sol;li>&NewLine;<li><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-and-mongodb-in-rest-application&sol;"><b>Spring Boot and MongoDB in REST Application<&sol;b><&sol;a><&sol;li>&NewLine;<li><b><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-actuator-complete-guide&sol;">Complete Guide for Spring Boot Actuator<&sol;a><&sol;b><&sol;li>&NewLine;<li><b><a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;microservices-with-spring-boot&sol;">Microservices with Spring Boot<&sol;a><&sol;b><&sol;li>&NewLine;<&sol;ol>&NewLine;<&sol;div>&NewLine;<&sol;div>&NewLine;<&sol;div>&NewLine;<&sol;div>&NewLine;<div class&equals;"wp-post-navigation"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <div class&equals;"wp-post-navigation-pre"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;whats-new-in-spring-framework-5x&sol;">Previous<&sol;a> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <&sol;div> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <div class&equals;"wp-post-navigation-next"> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-boot-with-nosql-technologies&sol;">Next<&sol;a> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab; <&sol;div> &NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;<&sol;div>&NewLine;<script type&equals;"text&sol;javascript">&NewLine;jQuery&lpar;document&rpar;&period;ready&lpar;function&lpar;&dollar;&rpar; &lbrace;&NewLine; &dollar;&period;post&lpar;'https&colon;&sol;&sol;dineshonjava&period;com&sol;wp-admin&sol;admin-ajax&period;php'&comma; &lbrace;action&colon; 'mts&lowbar;view&lowbar;count'&comma; id&colon; '129'&rcub;&rpar;&semi;&NewLine;&rcub;&rpar;&semi;&NewLine;<&sol;script>

Dinesh Rajput

Dinesh Rajput is the chief editor of a website Dineshonjava, a technical blog dedicated to the Spring and Java technologies. It has a series of articles related to Java technologies. Dinesh has been a Spring enthusiast since 2008 and is a Pivotal Certified Spring Professional, an author of a book Spring 5 Design Pattern, and a blogger. He has more than 10 years of experience with different aspects of Spring and Java design and development. His core expertise lies in the latest version of Spring Framework, Spring Boot, Spring Security, creating REST APIs, Microservice Architecture, Reactive Pattern, Spring AOP, Design Patterns, Struts, Hibernate, Web Services, Spring Batch, Cassandra, MongoDB, and Web Application Design and Architecture. He is currently working as a technology manager at a leading product and web development company. He worked as a developer and tech lead at the Bennett, Coleman & Co. Ltd and was the first developer in his previous company, Paytm. Dinesh is passionate about the latest Java technologies and loves to write technical blogs related to it. He is a very active member of the Java and Spring community on different forums. When it comes to the Spring Framework and Java, Dinesh tops the list!

Share
Published by
Dinesh Rajput

Recent Posts

Strategy Design Patterns using Lambda

Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…

4 years ago

Decorator Pattern using Lambda

Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…

4 years ago

Delegating pattern using lambda

Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…

4 years ago

Spring Vs Django- Know The Difference Between The Two

Technology has emerged a lot in the last decade, and now we have artificial intelligence;…

4 years ago

TOP 20 MongoDB INTERVIEW QUESTIONS 2022

Managing a database is becoming increasingly complex now due to the vast amount of data…

4 years ago

Scheduler @Scheduled Annotation Spring Boot

Overview In this article, we will explore Spring Scheduler how we could use it by…

4 years ago