Posts

Showing posts with the label Spring Boot

Are There Any Big Spring-boot Open Source Projects?

Answer : Here are some non pet store but a real world , non trivial , and open source application that use Spring Boot 2. Thingsboard which is an IoT platform with the microservice architecture using Spring Boot 2 Flowable is a business process engines that are based on Spring and have already upgrade to support Spring Boot 2.0 Spring Initializr is the backend web API that can quickly generate a sample spring-boot project. It is exactly the backend API that powered the famous start.spring.io. Kafdrop is the web client that managing Kafka. Built with Spring Boot, Spring MVC, Freemarker etc. Kafkawize is another web client that managing Kafka. Built with Spring Boot, Spring MVC, Spring Security,Spring Data JPA and Thymeleaf etc. The backend of the Corona-Warn-App which is an app that helps trace infection chains of COVID-19 in Germany.Built with Spring Boot, Spring MVC, Spring Security,Spring Data JPA, Bean Validation etc. CloudFoundry User Account and Authentication (UA...

Add Context Path To Spring Boot Application

Answer : Why are you trying to roll your own solution. Spring-boot already supports that. If you don't already have one, add an application.properties file to src\main\resources . In that properties file, add 2 properties: server.contextPath=/mainstay server.port=12378 UPDATE (Spring Boot 2.0) As of Spring Boot 2.0 (due to the support of both Spring MVC and Spring WebFlux) the contextPath has been changed to the following: server.servlet.contextPath=/mainstay You can then remove your configuration for the custom servlet container. If you need to do some post processing on the container you can add a EmbeddedServletContainerCustomizer implementation to your configuration (for instance to add the error pages). Basically the properties inside the application.properties serve as a default you can always override them by using another application.properties next to the artifact you deliver or by adding JVM parameters ( -Dserver.port=6666 ). See also The Reference...

Bootstrap.yml Configuration Not Processed Anymore With Spring Cloud 2020.0

Answer : As pointed put by Nicoll, With Spring Cloud Vault 3.0 and Spring Boot 2.4, the bootstrap context initialization ( bootstrap.yml , bootstrap.properties ) of property sources was deprecated . This can be fixed in one of the 2 ways Use Spring Boot 2.4.0 Config Data API to import configuration from Vault (Preferred) Legacy Processing: Enable the bootstrap context either by setting the configuration property spring.cloud.bootstrap.enabled=true or by including the dependency <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> 1. Use Spring Boot 2.4.0 Config Data API (Preferred) Move bootstrap.yml configuration to application.yml and updated file looks like below application.yml spring: cloud: vault: authentication: APPROLE app-role: role-id: ${role-id} secret-id: ${secret-id} role: pres-read app-role...

Call Another Rest Api From My Server In Spring-Boot

Answer : This website has some nice examples for using spring's RestTemplate. Here is a code example of how it can work to get a simple object: private static void getEmployees() { final String uri = "http://localhost:8080/springrestexample/employees.xml"; RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(uri, String.class); System.out.println(result); } Instead of String you are trying to get custom POJO object details as output by calling another API/URI , try the this solution. I hope it will be clear and helpful for how to use RestTemplate also, In Spring Boot , first we need to create Bean for RestTemplate under the @Configuration annotated class. You can even write a separate class and annotate with @Configuration like below. @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder.build(); } } The...

Benchmarking Spring Boot Application With JMH

Answer : The solution was quite than easy than I thought. The important part is to start the spring-boot application when the benchmark is getting initialized. Define a class level variable for configuration context and give a reference to it during setup of the benchmark. Make a call to the bean method inside the benchmark. import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.util.concurrent.TimeUnit; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Level; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.infra.Blackhole; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import org.springfram...