Merge pull request #213 from gauravrmazra/master
Common Configuration for Spring Boot Application
This commit is contained in:
commit
de5fef0131
|
@ -19,8 +19,24 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<!-- <exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions> -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- <dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-jetty</artifactId>
|
||||||
|
</dependency> -->
|
||||||
|
|
||||||
|
<!-- <dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-undertow</artifactId>
|
||||||
|
</dependency> -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package org.baeldung.common.error;
|
||||||
|
|
||||||
|
import org.springframework.boot.autoconfigure.web.ErrorController;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
public class MyCustomErrorController implements ErrorController {
|
||||||
|
|
||||||
|
private static final String PATH = "/error";
|
||||||
|
|
||||||
|
public MyCustomErrorController() {
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value=PATH)
|
||||||
|
public String error() {
|
||||||
|
return "Error heaven";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getErrorPath() {
|
||||||
|
return PATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package org.baeldung.common.error;
|
||||||
|
|
||||||
|
import javax.servlet.Servlet;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.embedded.ServletRegistrationBean;
|
||||||
|
|
||||||
|
public class SpringHelloServletRegistrationBean extends ServletRegistrationBean {
|
||||||
|
|
||||||
|
public SpringHelloServletRegistrationBean() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpringHelloServletRegistrationBean(Servlet servlet, String... urlMappings) {
|
||||||
|
super(servlet, urlMappings);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package org.baeldung.common.error.controller;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
public class ErrorController {
|
||||||
|
|
||||||
|
public ErrorController() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/400")
|
||||||
|
String error400() {
|
||||||
|
return "Error Code: 400 occured.";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping("/errorHeaven")
|
||||||
|
String errorHeaven() {
|
||||||
|
return "You have reached the heaven of errors!!!";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.baeldung.common.properties;
|
||||||
|
|
||||||
|
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
|
||||||
|
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
|
||||||
|
import org.springframework.boot.context.embedded.ErrorPage;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class MyServletContainerCustomizationBean implements EmbeddedServletContainerCustomizer {
|
||||||
|
|
||||||
|
public MyServletContainerCustomizationBean() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customize(ConfigurableEmbeddedServletContainer container) {
|
||||||
|
container.setPort(8084);
|
||||||
|
container.setContextPath("/springbootapp");
|
||||||
|
|
||||||
|
container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));
|
||||||
|
container.addErrorPages(new ErrorPage("/errorHeaven"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package org.baeldung.common.resources;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
|
import org.springframework.boot.ExitCodeGenerator;
|
||||||
|
|
||||||
|
public class ExecutorServiceExitCodeGenerator implements ExitCodeGenerator {
|
||||||
|
|
||||||
|
private ExecutorService executorService;
|
||||||
|
|
||||||
|
public ExecutorServiceExitCodeGenerator(ExecutorService executorService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getExitCode() {
|
||||||
|
int returnCode = 0;
|
||||||
|
try {
|
||||||
|
if (!Objects.isNull(executorService)) {
|
||||||
|
executorService.shutdownNow();
|
||||||
|
returnCode = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (SecurityException ex) {
|
||||||
|
returnCode = 0;
|
||||||
|
}
|
||||||
|
return returnCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package org.baeldung.controller.servlet;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
public class HelloWorldServlet extends HttpServlet {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public HelloWorldServlet() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
PrintWriter out = null;
|
||||||
|
try {
|
||||||
|
out = response.getWriter();
|
||||||
|
out.println("HelloWorldServlet: GET METHOD");
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (!Objects.isNull(out))
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
PrintWriter out = null;
|
||||||
|
try {
|
||||||
|
out = response.getWriter();
|
||||||
|
out.println("HelloWorldServlet: POST METHOD");
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (!Objects.isNull(out))
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package org.baeldung.controller.servlet;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
public class SpringHelloWorldServlet extends HttpServlet {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public SpringHelloWorldServlet() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
PrintWriter out = null;
|
||||||
|
try {
|
||||||
|
out = response.getWriter();
|
||||||
|
out.println("SpringHelloWorldServlet: GET METHOD");
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (!Objects.isNull(out))
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||||
|
PrintWriter out = null;
|
||||||
|
try {
|
||||||
|
out = response.getWriter();
|
||||||
|
out.println("SpringHelloWorldServlet: POST METHOD");
|
||||||
|
out.flush();
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (!Objects.isNull(out))
|
||||||
|
out.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,29 +0,0 @@
|
||||||
package org.baeldung.main;
|
|
||||||
|
|
||||||
import org.baeldung.service.LoginService;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@EnableAutoConfiguration
|
|
||||||
@ComponentScan({ "org.baeldung.endpoints", "org.baeldung.service", "org.baeldung.monitor.jmx" })
|
|
||||||
public class SpringBootActuatorApplication {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private LoginService service;
|
|
||||||
|
|
||||||
@RequestMapping("/")
|
|
||||||
String home() {
|
|
||||||
service.login("admin", "admin".toCharArray());
|
|
||||||
return "TADA!!! You are in Spring Boot Actuator test application.";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(SpringBootActuatorApplication.class, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
package org.baeldung.main;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
import org.baeldung.common.error.SpringHelloServletRegistrationBean;
|
||||||
|
import org.baeldung.common.resources.ExecutorServiceExitCodeGenerator;
|
||||||
|
import org.baeldung.controller.servlet.HelloWorldServlet;
|
||||||
|
import org.baeldung.controller.servlet.SpringHelloWorldServlet;
|
||||||
|
import org.baeldung.service.LoginService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@EnableAutoConfiguration
|
||||||
|
@ComponentScan({ "org.baeldung.common.error", "org.baeldung.common.error.controller",
|
||||||
|
"org.baeldung.common.properties", "org.baeldung.common.resources", "org.baeldung.endpoints",
|
||||||
|
"org.baeldung.service", "org.baeldung.monitor.jmx", "org.baeldung.service"})
|
||||||
|
public class SpringBootApplication {
|
||||||
|
|
||||||
|
private static ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LoginService service;
|
||||||
|
|
||||||
|
@RequestMapping("/")
|
||||||
|
String home() {
|
||||||
|
service.login("admin", "admin".toCharArray());
|
||||||
|
return "TADA!!! You are in Spring Boot Actuator test application.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
applicationContext = SpringApplication.run(SpringBootApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ExecutorService executorService() {
|
||||||
|
return Executors.newFixedThreadPool(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public HelloWorldServlet helloWorldServlet() {
|
||||||
|
return new HelloWorldServlet();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public SpringHelloServletRegistrationBean servletRegistrationBean() {
|
||||||
|
SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean(new SpringHelloWorldServlet(), "/springHelloWorld/*");
|
||||||
|
bean.setLoadOnStartup(1);
|
||||||
|
bean.addInitParameter("message", "SpringHelloWorldServlet special message");
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @Bean
|
||||||
|
public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
|
||||||
|
JettyEmbeddedServletContainerFactory jettyContainer = new JettyEmbeddedServletContainerFactory();
|
||||||
|
jettyContainer.setPort(9000);
|
||||||
|
jettyContainer.setContextPath("/springbootapp");
|
||||||
|
return jettyContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
|
||||||
|
UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
|
||||||
|
factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void customize(io.undertow.Undertow.Builde builder) {
|
||||||
|
builder.addHttpListener(8080, "0.0.0.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
return factory;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Autowired
|
||||||
|
public ExecutorServiceExitCodeGenerator executorServiceExitCodeGenerator(ExecutorService executorService) {
|
||||||
|
return new ExecutorServiceExitCodeGenerator(executorService);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutDown(ExecutorServiceExitCodeGenerator executorServiceExitCodeGenerator) {
|
||||||
|
SpringApplication.exit(applicationContext, executorServiceExitCodeGenerator);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
server.port=8083
|
||||||
|
server.contextPath=/springbootapp
|
||||||
management.port=8081
|
management.port=8081
|
||||||
management.address=127.0.0.1
|
management.address=127.0.0.1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue