spring bootを触ってみた
TRANSCRIPT
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
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
•