Spring Boot projeleri hazırlamak

Muhammet Çakır
Aug 25, 2017 · 4 min read

Spring Boot, Spring tabanlı uygulamaların kolay ve hızlı bir şekilde hazırlanmasını sağlayan bir framework’tür. Spring çatısı ve diğer teknolojilerin (Redis, Hazelcast, Cassandra vs.) yapılandırma ayarlarını kendi içerisinde halleder ve geliştiriciye ihtiyacı olan kodu yazmasını sağlar.

Özellikleri

  • Kendi başına çalışabilir Spring uygulamaları oluşturur
  • Çalıştırılabilir jar dosyasının içerisinde doğrudan Tomcat, Jetty ve Undertow desteği sağlar (WAR oluşturmanıza gerek kalmaz)
  • Maven yapılandırmalarınızı basitleştirmek için ‘starter’ POM dosyaları sağlar
  • Spring yapılandırmalarını otomatik halleder
  • Son kullanıcıya hazır uygulama özellikleri (uygulamanın ölçüm ve sağlık kontrolleri, özelleştirilmiş yapılandırmalar) sağlar
  • Kod oluşturmaz ve XML yapılandırması gerekmez

Proje oluşturmak

Örnek web uygulaması

Web; Projemiz bir web uygulaması olacağı için ilgili starter
Thymeleaf; view katmanında kullanılacak template engine
JPA; database CRUD işlemleri
MySQL; database erişimi

Pom dosyası

<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.mcakir</groupId>
<artifactId>bootiful</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>bootiful</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

Proje yapısı

application.properties; uygulamanıza ait default yapılandırma ayarlarını burada özelleştirerek override edilebilir
static; image, javascript ve css gibi dosyalar
template; view dosyaları
import.sql; uygulama çalıştırıldığında database e kayıt girmek için

BootifulApplication; uygulamanın çalıştırılabilmesi için gerekli olan Main Class

@SpringBootApplication
public class BootifulApplication {

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

Not: @SpringBootApplication = @Configuration +@EnableAutoConfiguration + @ComponentScan

Not: @SpringBootApplication anotasyonuna sahip class, proje package yapınızın dallanmaya başladığı dizinde (com.mcakir.bootiful) olmalı. Bu anotasyon otomatik olarak bulunduğu package dizininden itibaren tanımlanan Spring bean’lerinin (controller, repository, service vs.) Spring tarafından yönetilmesini sağlar.

Not: @SpringBootApplication anotasyonuna sahip class; farklı bir package dizini altında konumlandırmak istenirse, Spring in component scan tanımlamasının ona göre düzenlenmesi gerekir. Aksi hâlde tanımladığınız Spring bean’leri Spring tarafından yönetilemez.

Not: import.sql dosyası spring.jpa.hibernate.ddl-auto özelliği create veya create-drop ise uygulama başlatıldığında database şemasını etkiler.

Uygulama çalıştırıldığında aşağıdaki sonuç elde edilir.

Çalıştırılabilir jar oluşturma (Executable Jar)

Çalıştırılabilir jar oluşturabilmek için Spring Boot Maven Plugin’in ve packaging değerinin “jar” olarak pom dosyasında tanımlı olması gerekir.

......<packaging>jar</packaging>.....<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
.......

Ardından mvn package komut çalıştırılır ve packaging işlemi başarılı bir şekilde gerçekleştikten sonra console output’unda jar dosyasını nereye çıkarttığını yazar.

Oluşturulan jar dosyası komut satırından java -jar file_name.jar komutu ile çalıştırılabilir.

jar dışındaki application.properties dosyası ile jar çalıştırma

java -Dspring.config.location=application.properties -jar application.jar

Hata sayfaları

4xx.html
5xx.html
  • Statik
    src/main/resources/static/error dizini altına istenilen hata koduna ait html sayfası oluşturulabilir. Örnek; 404 hata kodu için 404.html veya tüm 4xx hata kodları için 4xx.html dosyası.
  • Dinamik
    src/main/resources/templates/error dizini altına statikte olduğu gibi html sayfaları oluşturulabilir. Statik yöntemden farkı ${status} ve ${error} değişkenlerine erişebilir ve buna göre dinamik uyarı gösterilebilir.

Proje Kodları

*BONUS

Web, Apache Cxf Jax-ws, Spring Security, Spring Data Jpa, Redis, Thymeleaf & Tiles, Mvc Router gibi birçok özelliği barındıran Spring Boot tabanlı örneğe göz atabilirsiniz.

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade