Back
Featured image of post 02 Spring Boot

02 Spring Boot

The first web application for Hello Spring Boot with coding explanation

Start Project from Spring Initializer

  • Main file

    • src/main/java/com.example/main
  • resources

    • static: store static resources like js, css, images
    • templates: store all templates files
    • application.properties: config file, can modify some setting

“Project Structure”
“Project Structure”

Main Function

  • This method aims to run the spring boot application

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

    • To mark Spring Boot must run this main method of this class to run Spring Boot application

      @Target(ElementType.TYPE)
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Inherited
      @SpringBootConfiguration
      @EnableAutoConfiguration
      @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
              @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
      public @interface SpringBootApplication {
          ...
      }
      

Controller Service

  • @RestController
    public class HelloController {
      
        @RequestMapping("/hello")
        public String hello() {
            return "Hello Spring Boot!";
        }
    }
    
  • @RestController

    • the return value of all methods will be wirtten on brower

      @Target({ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Controller
      @ResponseBody
      public @interface RestController {
          @AliasFor(
              annotation = Controller.class
          )
          String value() default "";
      }
      

Deploy

  • add plugin in pom.xml

    <!-- this plugin make application to a jar package>
    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
  • Using mvn package commend to generate jar file

  • find jar file it in target file, then use terminal to open it

    java -jar filename
    

To Explore More

  • spring-boot-starter-web

    • In this project, we utilized web to develop web application.
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  • There many starter we can use

    Name Description
    spring-boot-starter Core starter, including auto-configuration support, logging and YAML
    spring-boot-starter-activemq Starter for JMS messaging using Apache ActiveMQ
    spring-boot-starter-amqp Starter for using Spring AMQP and Rabbit MQ
    spring-boot-starter-aop Starter for aspect-oriented programming with Spring AOP and AspectJ
    spring-boot-starter-artemis Starter for JMS messaging using Apache Artemis
    spring-boot-starter-batch Starter for using Spring Batch
    spring-boot-starter-cache Starter for using Spring Framework’s caching support
    spring-boot-starter-data-cassandra Starter for using Cassandra distributed database and Spring Data Cassandra
    spring-boot-starter-data-cassandra-reactive Starter for using Cassandra distributed database and Spring Data Cassandra Reactive
    spring-boot-starter-data-couchbase Starter for using Couchbase document-oriented database and Spring Data Couchbase
    spring-boot-starter-data-couchbase-reactive Starter for using Couchbase document-oriented database and Spring Data Couchbase Reactive
    spring-boot-starter-data-elasticsearch Starter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch
    spring-boot-starter-data-jdbc Starter for using Spring Data JDBC
    spring-boot-starter-data-jpa Starter for using Spring Data JPA with Hibernate
    spring-boot-starter-data-ldap Starter for using Spring Data LDAP
    spring-boot-starter-data-mongodb Starter for using MongoDB document-oriented database and Spring Data MongoDB
    spring-boot-starter-data-mongodb-reactive Starter for using MongoDB document-oriented database and Spring Data MongoDB Reactive
    spring-boot-starter-data-neo4j Starter for using Neo4j graph database and Spring Data Neo4j
    spring-boot-starter-data-r2dbc Starter for using Spring Data R2DBC
    spring-boot-starter-data-redis Starter for using Redis key-value data store with Spring Data Redis and the Lettuce client
    spring-boot-starter-data-redis-reactive Starter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client
    spring-boot-starter-data-rest Starter for exposing Spring Data repositories over REST using Spring Data REST
    spring-boot-starter-data-solr Starter for using the Apache Solr search platform with Spring Data Solr
    spring-boot-starter-freemarker Starter for building MVC web applications using FreeMarker views
    spring-boot-starter-groovy-templates Starter for building MVC web applications using Groovy Templates views
    spring-boot-starter-hateoas Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS
    spring-boot-starter-integration Starter for using Spring Integration
    spring-boot-starter-jdbc Starter for using JDBC with the HikariCP connection pool
    spring-boot-starter-jersey Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web
    spring-boot-starter-jooq Starter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc
    spring-boot-starter-json Starter for reading and writing json
    spring-boot-starter-jta-atomikos Starter for JTA transactions using Atomikos
    spring-boot-starter-jta-bitronix Starter for JTA transactions using Bitronix. Deprecated since 2.3.0
    spring-boot-starter-mail Starter for using Java Mail and Spring Framework’s email sending support
    spring-boot-starter-mustache Starter for building web applications using Mustache views
    spring-boot-starter-oauth2-client Starter for using Spring Security’s OAuth2/OpenID Connect client features
    spring-boot-starter-oauth2-resource-server Starter for using Spring Security’s OAuth2 resource server features
    spring-boot-starter-quartz Starter for using the Quartz scheduler
    spring-boot-starter-rsocket Starter for building RSocket clients and servers
    spring-boot-starter-security Starter for using Spring Security
    spring-boot-starter-test Starter for testing Spring Boot applications with libraries including JUnit Jupiter, Hamcrest and Mockito
    spring-boot-starter-thymeleaf Starter for building MVC web applications using Thymeleaf views
    spring-boot-starter-validation Starter for using Java Bean Validation with Hibernate Validator
    spring-boot-starter-web Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container
    spring-boot-starter-web-services Starter for using Spring Web Services
    spring-boot-starter-webflux Starter for building WebFlux applications using Spring Framework’s Reactive Web support
    spring-boot-starter-websocket Starter for building WebSocket applications using Spring Framework’s WebSocket support

end.

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy