Spring Bootを触ってみた

Preview:

Citation preview

Spring Boot

2016-12-22

onozaty

Spring Boot•

• Play Framework

• Spring

• Play ScalaScala

Spring Boot• Spring Framework

• Spring Framework

• Tomcat Jettyjar(Uber JAR)

• Maven Gradle

• ( )

Spring Initializr• Spring Boot

WEB

Spring Initializr• Project

( Maven Gradle )

• STS(Spring Tool Suite)

Spring Initializr•

• http://start.spring.io/

Spring Initializr

Spring Initializr

Spring Initializr

Spring Initializr•

Hello World!Dependencies Web Project

Hello World!Eclipse “Hello World!!”

package com.example;

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

@Controllerpublic class HelloController {

@RequestMapping("/") @ResponseBody public String hello(){ return "Hello World!!"; }}

Hello World!Tomcat

• Spring BootSpring

• Web Spring MVC

• Spring Boot

• https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples

AutoConfigure• Spring Boot AutoConfigure

AutoConfigure

AutoConfigure• Flyway

Flyway

• H2datasource H2

DB

DB•

• Spring JDBC • Spring DATA JPA • MyBatis Spring

Spring JDBC• spring-boot-starter-jdbc

• JDBC(Apache commons DbUtils )

Spring JDBC@Repositorypublic class CustomerRepository {

@Autowired private NamedParameterJdbcTemplate jdbcTemplate;

public List<Customer> findAll() {

return jdbcTemplate.query( "SELECT * FROM customers ORDER BY id", new BeanPropertyRowMapper<Customer>(Customer.class)); }

public void update(Customer customer) {

jdbcTemplate.update( "UPDATE customers SET name = :name, address = :address WHERE id = :id", new BeanPropertySqlParameterSource(customer)); }}

Spring DATA JPA• spring-boot-starter-data-jpa

• JPA

• JPA EntityManager Interface

Spring DATA JPA@Entity@Table(name = "customers")@Data@AllArgsConstructor@NoArgsConstructorpublic class Customer {

@Id @GeneratedValue private Integer id;

private String name;

private String address;}

Spring DATA JPA

@Servicepublic class CustomerService {

@Autowired private CustomerRepository customerRepository;

public List<Customer> findAll() { return customerRepository.findAll(); }

public List<Customer> findByName(String name) { return customerRepository.findByName(name); }

public Customer create(Customer customer) { return customerRepository.save(customer); }

@Repositorypublic interface CustomerRepository extends JpaRepository<Customer, Integer> {

public List<Customer> findByName(String name);}

REST API• CRUD API

• RDBMS H2 • Spring DATA JPA • Flyway DB • Swagger

• • https://github.com/onozaty/spring-boot-sandbox/tree/

master/spring-boot-demo-20161222

• Spring