Close

Spring Boot - SpringApplication Examples

Spring Boot 

SpringApplication#run bootstraps a spring application as a stand-alone application from the main method. It creates an appropriate ApplicationContext instance and load beans.

It also runs embedded Tomcat server in Spring web application.

Once started the application can be accessed at localhost:8080

package com.logicbig.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class HelloWorldApplication {
public static void main (String[] args) {
ApplicationContext ctx =
SpringApplication.run(HelloWorldApplication.class, args);

}
}
package com.logicbig.example;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloWorldController {
@RequestMapping("/")
@ResponseBody
public String helloHandler () {
return "<h1>Hello World!</h1>";
}
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.logicbig.example</groupId>
<artifactId>spring-boot-hello-world</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>


<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
Original Post




This example uses spring-boot-maven-plugin so that we can run our application in the exploded form by running mvn spring-boot:run or we can package it in executable jar by running mvn package spring-boot:repackage.

package com.logicbig.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class MainClass {
public static void main (String[] args) {
SpringApplication.run(MainClass.class, args);
}

@RestController
private static class TheController {

@RequestMapping("/")
public String handle () {
return "message from rest handler";
}

}
}

Another main class, so we have to add mainClass configuration in the pom.

package com.logicbig.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class MainClass2 {
public static void main (String[] args) {
SpringApplication.run(MainClass2.class, args);
}

@RestController
private static class TheController2 {

@RequestMapping("/two")
public String handle () {
return "message from rest handler 2";
}

}
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.logicbig.example</groupId>
<artifactId>boot-mvn-plugin-example</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>

<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
<configuration>
<mainClass>com.logicbig.example.MainClass</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original Post




Setting default properties, overriding default static content location.

package com.logicbig.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.Properties;

@EnableAutoConfiguration
public class ReplaceDefaultLocationsExample {

public static void main (String[] args) {

SpringApplication app =
new SpringApplication(ReplaceDefaultLocationsExample.class);

Properties properties = new Properties();
properties.setProperty("spring.resources.static-locations",
"classpath:/newLocation1/, classpath:/newLocation2/");
app.setDefaultProperties(properties);
app.run(args);
}
}
Original Post




package com.logicbig.example;

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@SpringBootApplication(exclude = {JmxAutoConfiguration.class})
public class Main {
public static void main (String[] args) {
SpringApplication sa = new SpringApplication(Main.class);
sa.setBannerMode(Banner.Mode.OFF);
sa.setLogStartupInfo(false);

ApplicationContext c = sa.run(args);
MyObject bean = c.getBean(MyObject.class);
bean.doSomething();

}

@Component
private static class MyObject {

public void doSomething () {
System.out.println("-------------");
System.out.println("working ...");
System.out.println("-------------");
}
}
}

Output

-------------
working ...
-------------
Original Post




See Also