13 December 2017 · Java spring spring-boot

Spring-boot without start.spring.io

  1. Create simple app using maven

    mvn archetype:generate -DgroupId=org.catcher -DartifactId=SampleApp -DarchetypeArtifactId=maven-archetype-webapp
    
  2. Add parent spring-boot-starter to main pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
    </parent>
    
  3. Add SpringFramework, Spring MVC, Servlet Api and ApacheTomcat

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  4. Add JPA (Hibernate)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
  5. Add Spring Security

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
  6. Add application monitoring

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  7. Add test components (Mockito, JUnit, AspectJ)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    
  8. Add database driver

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.196</version>
    </dependency>
    
  9. Add maven java level to avoid InteliJ warnings

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    
  10. Add started class

    package org.catcher.sampleapp;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class SpringBootWebApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringBootApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootWebApplication.class, args);
        }
    
    }
    
  11. Add Artist entity:

    package org.catcher.sampleapp.entities;
    
    import lombok.*;
    
    import javax.persistence.*;
    import java.io.Serializable;
    import java.util.HashSet;
    import java.util.Set;
    
    @Getter
    @Setter
    @NoArgsConstructor
    @RequiredArgsConstructor
    @Entity
    @Table(name = "ER_ARTIST")
    public class Artist implements Serializable {
    
        @Id
        @GeneratedValue
        private Long id;
    
        @NonNull
        private String name;
    
        @NonNull
        private String surname;
    
        @OneToMany(mappedBy = "artist", cascade = CascadeType.ALL)
        private Set<Album> albums = new HashSet<>();
    
        public void addAlbum(Album album) {
            albums.add(album);
        }
    }
    

C.D.N. ;-)