Spring Boot

New Features in Spring Boot 1.4

<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;">&NewLine;<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;">&NewLine;<div dir&equals;"ltr" style&equals;"text-align&colon; justify&semi;">&NewLine;<div style&equals;"text-align&colon; justify&semi;">&NewLine;On Last month May 17&comma; 2016 spring boot team has announced the release of Spring Boot 1&period;4&period;0 M3&period; There is lot of changes coming up in the new release&period; In this post I am going to list down the summary of new features in spring boot 1&period;4 This release closes over 150 issues and introduces a number of new features&period;<&sol;p>&NewLine;<p><b>Highlights include&colon;<&sol;b><&sol;p>&NewLine;<ul>&NewLine;<li>Lots of bug fixes and improvements over M2 &lpar;thanks to everyone for trying the milestones&rpar;&period;<&sol;li>&NewLine;<li>Convention based error pages &lpar;want a custom 404&comma; just add <i><b>src&sol;main&sol;resources&sol;public&sol;error&sol;404&period;html<&sol;b><&sol;i>&rpar;&period;<&sol;li>&NewLine;<li>Improved ErrorPage registration support&period;<&sol;li>&NewLine;<li>Support for pluggable OAuth2 Principal extraction&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<&sol;div>&NewLine;<h2 style&equals;"text-align&colon; justify&semi;"><b>New Features in Spring Boot 1&period;4<&sol;b><&sol;h2>&NewLine;<div style&equals;"text-align&colon; justify&semi;">There are following new features of Spring Boot 1&period;4 Version release<&sol;div>&NewLine;<div style&equals;"text-align&colon; justify&semi;"><&sol;div>&NewLine;<ol>&NewLine;<li>Executable JAR Layout<&sol;li>&NewLine;<li>Startup error improvements<&sol;li>&NewLine;<li>Hibernate 5<&sol;li>&NewLine;<li>Spring Framework 4&period;3<&sol;li>&NewLine;<li>Third Party Library<&sol;li>&NewLine;<li>Custom JSON Serializer and Deserializer<&sol;li>&NewLine;<li>New auto-configuration support&NewLine;<ol>&NewLine;<li>    Couchbase<&sol;li>&NewLine;<li>    Neo4j<&sol;li>&NewLine;<li>    Narayana transactional manager<&sol;li>&NewLine;<li>    Caffeine Cache<&sol;li>&NewLine;<&sol;ol>&NewLine;<&sol;li>&NewLine;<li>Actuator improvements<&sol;li>&NewLine;<li>Testing improvements<&sol;li>&NewLine;<li>Datasource binding<&sol;li>&NewLine;<li>Image Banner<&sol;li>&NewLine;<li>Summary<&sol;li>&NewLine;<&sol;ol>&NewLine;<&sol;div>&NewLine;<h3><b>Executable JAR Layout<&sol;b><&sol;h3>&NewLine;<p>If you are building the JAR file as an executable spring boot application&comma; all the dependencies will be packaged under WEB-INF&sol;lib and application’s own classes will be packages under root of the JAR file&period; But&comma; spring boot 1&period;4&period;0 will package the dependencies under BOOT-INF&sol;lib and application’s own classes under BOOT-INF&sol;classes&period;<&sol;p>&NewLine;<h3><b>Startup Error Improvements<&sol;b><&sol;h3>&NewLine;<p>There is a improvement in displaying the useful error description on startup failures&period; Prior to 1&period;4&period;0&comma; startup failures shows long stack trace that would not show the actual issue unless developer has to read the complete stack trace&period; But&comma; latest release just shows the cause of the failure and what is the solution&period;<&sol;p>&NewLine;<h3><b>Hibernate 5<&sol;b><&sol;h3>&NewLine;<div style&equals;"text-align&colon; justify&semi;">If you have upgrade problems switching to Hibernate 5 can be postponed at a later stage by setting the hibernate&period;version in your pom&period;xml&period; Note though that the Spring team will not support Hibernate 4&period;3 from Spring Boot 1&period;4&period; So&comma; it is advisable to upgrade to the latest hibernate versions immediately&period;<&sol;div>&NewLine;<div style&equals;"text-align&colon; justify&semi;">If you want to still use the older version in your application&comma; please add the following entries in your <b>pom&period;xml<&sol;b>&colon;<&sol;div>&NewLine;<pre class&equals;"highlight">&lt&semi;properties&gt&semi; &NewLine; &lt&semi;hibernate&period;version&gt&semi;4&period;3&period;11&period;Final&lt&semi;&sol;hibernate&period;version&gt&semi; &NewLine;&lt&semi;&sol;properties&gt&semi; &NewLine;<&sol;pre>&NewLine;<h3><b>Spring 4&period;3&period;0-RC1<&sol;b><&sol;h3>&NewLine;<p>In Spring 4&period;3&period;0-RC1 there are lots of new features and enhancements&period; The full list you can find it <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;whats-new-in-spring-framework-4x&sol;" target&equals;"&lowbar;blank" rel&equals;"noopener">here<&sol;a>&period; &lpar;Also Read &colon; <a href&equals;"https&colon;&sol;&sol;dineshonjava&period;com&sol;spring-4-tutorials-step-to-new-spring&sol;" target&equals;"&lowbar;blank" rel&equals;"noopener">Spring 4 Tutorials<&sol;a>&rpar;&period;<&sol;p>&NewLine;<h3><b>Third Party Libraries<&sol;b><&sol;h3>&NewLine;<ul style&equals;"text-align&colon; left&semi;">&NewLine;<li>Hibernate 5&period;1<&sol;li>&NewLine;<li>Jackson 2&period;7<&sol;li>&NewLine;<li>Solr 5&period;5<&sol;li>&NewLine;<li>Spring Data Hopper<&sol;li>&NewLine;<li>Spring Session 1&period;2<&sol;li>&NewLine;<li>Hazelcast 3&period;6&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><b>Custom JSON Serializer and Deserializer<&sol;b><&sol;h3>&NewLine;<p>If you want to register a bean as the JSON components&comma; then you can use &commat;JsonComponent annotation as below&colon;<&sol;p>&NewLine;<pre class&equals;"highlight">&commat;JsonComponent &NewLine;public class ModelData&lbrace; &NewLine;&period;&period;&period;&period; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<h3><b>New Auto-Configuration Support<&sol;b><&sol;h3>&NewLine;<p>Spring boot adds new auto configuration modules for every release&period; In this release also there are few more modules added to support the auto-configurations&period;<&sol;p>&NewLine;<ul style&equals;"text-align&colon; left&semi;">&NewLine;<li>Couchbase<&sol;li>&NewLine;<li>Neo4j<&sol;li>&NewLine;<li>Narayana Transaction Manager<&sol;li>&NewLine;<li>Caffeine Cache<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><b>Actuator Improvements<&sol;b><&sol;h3>&NewLine;<div style&equals;"text-align&colon; justify&semi;">There is a slight improvements on info endpoint information and metrics filter&period;<&sol;div>&NewLine;<div style&equals;"text-align&colon; justify&semi;">Now you can register the InfoContributor interface to register the beans that expose the information to the info actuator endpoints&period;<&sol;div>&NewLine;<p>The support provided for&colon;<&sol;p>&NewLine;<ul style&equals;"text-align&colon; left&semi;">&NewLine;<li>Full or partial Git information generated from a build plugin<&sol;li>&NewLine;<li>Build information generated from the Spring Boot Maven or Gradle plugin&period;<&sol;li>&NewLine;<li>Custom information from the Environment &lpar;any property starting info&period;&ast;&rpar;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><b>Testing support<&sol;b><&sol;h3>&NewLine;<p>The biggest change comes regarding testing support&period; There are two new modules spring-boot-test and spring-boot-test-autoconfigure<&sol;p>&NewLine;<p><b>&commat;SpringBootTest<&sol;b><&sol;p>&NewLine;<div style&equals;"text-align&colon; justify&semi;">Spring already comes with great support for writing integration tests leveraging the spring-test module&period; The only problem might be that it uses lots of annotations &lpar;&commat;SpringApplicationConfiguration&comma; &commat;ContextConfiguration&comma; &commat;IntegrationTest&comma; &commat;WebIntegrationTest&rpar; to accomplish it&period;<&sol;div>&NewLine;<p>Spring Boot 1&period;4 tries to simplify this by providing a single &commat;SpringBootTest annotation&period;<&sol;p>&NewLine;<pre class&equals;"highlight">&commat;RunWith&lpar;SpringRunner&period;class&rpar; &NewLine;&commat;SpringBootTest&lpar;webEnvironment &equals; SpringBootTest&period;WebEnvironment&period;RANDOM&lowbar;PORT&rpar; &NewLine;&commat;Sql&lpar;"&sol;init-for-full-integration-test&period;sql"&rpar; &NewLine;public class ApplicationTests &lbrace; &NewLine; &NewLine; &commat;Autowired &NewLine; private TestRestTemplate template&semi; &NewLine; &NewLine; &commat;Test &NewLine; public void random&lpar;&rpar; &lbrace; &NewLine; ResponseEntity&lt&semi;String&gt&semi; fact &equals; template&period;getForEntity&lpar;"&sol;"&comma; String&period;class&rpar;&semi; &NewLine; &NewLine; assertThat&lpar;fact&period;getBody&lpar;&rpar;&comma; containsString&lpar;"Chuck Norris sleeps with a pillow under his gun&period;"&rpar;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p>Here as you can see for convenience the injected TestRestTemplate is already configured to make calls against the started server&comma; no need to inject the port with &commat;Value&lpar;&&num;8220&semi;&dollar;&lbrace;local&period;server&period;port&rcub;&&num;8221&semi;&rpar;&period; However if you would like to know the port there is a better &commat;LocalServerPort annotation&period;<&sol;p>&NewLine;<p><b>Testing slices of the application<&sol;b><br &sol;>&NewLine;Sometimes you would like to test a simple &OpenCurlyDoubleQuote;slice” of the application instead of auto-configuring the whole application&period; Spring Boot 1&period;4 introduces 3 new test annotations&colon;<&sol;p>&NewLine;<ul style&equals;"text-align&colon; left&semi;">&NewLine;<li>&commat;WebMvcTest &&num;8211&semi; for testing the controller layer<&sol;li>&NewLine;<li>&commat;JsonTest &&num;8211&semi; for testing the JSON marshalling and unmarshalling<&sol;li>&NewLine;<li>&commat;DataJpaTest &&num;8211&semi; for testing the repository layer<&sol;li>&NewLine;<&sol;ul>&NewLine;<p><b>&commat;WebMvcTest<&sol;b><br &sol;>&NewLine;In order to test only the controller layer or often a single controller the &commat;WebMvcTest used in combination with &commat;MockBean can be handy&period; &commat;Service or &commat;Repository components will not be scanned&period;<&sol;p>&NewLine;<pre class&equals;"highlight">&commat;RunWith&lpar;SpringRunner&period;class&rpar; &NewLine;&commat;WebMvcTest&lpar;ChuckNorrisFactController&period;class&rpar; &NewLine;public class CheckNorrisFactControllerTests &lbrace; &NewLine; &NewLine; &commat;Autowired &NewLine; private MockMvc mvc&semi; &NewLine; &NewLine; &commat;MockBean &NewLine; private ChuckNorrisFactService chuckNorrisFactService&semi; &NewLine; &NewLine; &commat;Test &NewLine; public void getOneRandomly&lpar;&rpar; throws Exception &lbrace; &NewLine; given&lpar;chuckNorrisFactService&period;getOneRandomly&lpar;&rpar;&rpar;&period;willReturn&lpar;new ChuckNorrisFact&lpar;"Chuck Norris counted to infinity twice&period;"&rpar;&rpar;&semi; &NewLine; &NewLine; mvc&period;perform&lpar;get&lpar;"&sol;"&rpar;&period;accept&lpar;MediaType&period;APPLICATION&lowbar;JSON&rpar;&rpar; &NewLine; &period;andExpect&lpar;status&lpar;&rpar;&period;isOk&lpar;&rpar;&rpar; &NewLine; &period;andExpect&lpar;content&lpar;&rpar;&period;json&lpar;"&lbrace;'fact'&colon;'Chuck Norris counted to infinity twice&period;'&rcub;"&rpar;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<p><b>&commat;JsonTest<&sol;b><br &sol;>&NewLine;To test JSON marshalling and unmarshalling you can use the &commat;JsonTest annotation&period; &commat;JsonTest will auto-configure Jackson ObjectMappers and &commat;JsonComponent beans<&sol;p>&NewLine;<pre class&equals;"highlight">&commat;RunWith&lpar;SpringRunner&period;class&rpar; &NewLine;&commat;JsonTest &NewLine;public class ChuckNorrisFactJsonTests &lbrace; &NewLine; &NewLine; private JacksonTester json&semi; &NewLine; &NewLine; &commat;Test &NewLine; public void serialize&lpar;&rpar; throws IOException &lbrace; &NewLine; ChuckNorrisFact fact &equals; new ChuckNorrisFact&lpar;"When Chuck Norris turned 18&comma; his parents moved out&period;"&rpar;&semi; &NewLine; JsonContent write &equals; this&period;json&period;write&lpar;fact&rpar;&semi; &NewLine; &NewLine; assertThat&lpar;this&period;json&period;write&lpar;fact&rpar;&rpar;&period;isEqualToJson&lpar;"expected&period;json"&rpar;&semi; &NewLine; &rcub; &NewLine; &NewLine; &commat;Test &NewLine; public void deserialize&lpar;&rpar; throws IOException &lbrace; &NewLine; String content &equals; "&lbrace;"fact"&colon;"Chuck Norris knows Victoria's secret&period;"&rcub;"&semi; &NewLine; &NewLine; assertThat&lpar;this&period;json&period;parse&lpar;content&rpar;&rpar;&period;isEqualTo&lpar;new ChuckNorrisFact&lpar;"Chuck Norris knows Victoria's secret&period;"&rpar;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p><b>&commat;DataJpaTest<&sol;b><&sol;p>&NewLine;<p>To test the JPA layer of an application you can use &commat;DataJpaTest&period; By default it configures an in-memory database&comma; scans for &commat;Entity classes and configures the Spring Data JPA repositories&period; &commat;Service&comma; &commat;Controller&comma; &commat;RestController beans will not be loaded&period;<&sol;p>&NewLine;<pre class&equals;"highlight">&commat;RunWith&lpar;SpringRunner&period;class&rpar; &NewLine;&commat;DataJpaTest &NewLine;public class ChuckNorrisFactRepositoryTests &lbrace; &NewLine; &NewLine; &commat;Autowired &NewLine; private TestEntityManager entityManager&semi; &NewLine; &NewLine; &commat;Autowired &NewLine; private ChuckNorrisFactRepository repository&semi; &NewLine; &NewLine; &commat;Test &NewLine; public void getOneRandomly&lpar;&rpar; &lbrace; &NewLine; String fact &equals; "If at first you don't succeed&comma; you're not Chuck Norris&period;"&semi; &NewLine; entityManager&period;persist&lpar;new ChuckNorrisFact&lpar;fact&rpar;&rpar;&semi; &NewLine; &NewLine; List&lt&semi;ChuckNorrisFact&gt&semi; facts &equals; repository&period;getOneRandomly&lpar;new PageRequest&lpar;0&comma; 10&rpar;&rpar;&semi; &NewLine; assertThat&lpar;facts&period;get&lpar;0&rpar;&period;getText&lpar;&rpar;&comma; is&lpar;fact&rpar;&rpar;&semi; &NewLine; &rcub; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<h3><b>Datasource binding<&sol;b><&sol;h3>&NewLine;<p>In Spring Boot 1&period;4 via spring&period;datasource property namespace only the common datasource properties are set&period; For datasource provider specific ones new namespaces were introduced&period;<&sol;p>&NewLine;<pre class&equals;"highlight">spring&period;datasource&period;hikari&period;maximum-pool-size&equals;5 &NewLine;spring&period;datasource&period;hikari&period;connection-timeout&equals;10 &NewLine;<&sol;pre>&NewLine;<h3><b><br &sol;>&NewLine;<&sol;b> <b>Image Banners<&sol;b><&sol;h3>&NewLine;<p>You can use an image to render the ASCII banner&period;<&sol;p>&NewLine;<h2><b>Summary<&sol;b><&sol;h2>&NewLine;<p>If you want to try out these new features and enhancements have a look to this <a href&equals;"https&colon;&sol;&sol;github&period;com&sol;spring-projects&sol;spring-boot&sol;issues&quest;page&equals;1&amp&semi;q&equals;milestone&percnt;3A1&period;4&period;0&period;M1" target&equals;"&lowbar;blank" rel&equals;"noopener">github <&sol;a>repository&period;<&sol;p>&NewLine;<&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;<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; &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-tutorial&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; '148'&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