Spring Boot Tutorial for Beginners (Java Framework)

  • 넷플릭스 백엔드가 스프링부트로 바뀐다. 플러그인같은게 많아서 개발 쉽기때문.
  • STS에서 플젝을 만든다. 버전은 2 이상으로 설정하기. 필요한 dependency를 맘대로 추가하면 된다.
  • 구조 만들기
  • Model 만들었고 Making DAO. DB랑 연결되는부분. 인터페이스로 만든다.
  • FakePersonDataAccessService를 만들고 PersonDao를 구현하자. 거기안엔 db접속 하지말고 그냥 Person list를 두고.
  • PersonService 만들자. 거기선 interface를 멤버로 받자. 구현체 말고.
  • API 만들자. PersonController.
  • PersonService를 생성자로 받는다
  • 이제 spring 관련된걸 적용하자.
  • PersonDao is not instantiated yet - 어노테이션으로 bean을 instantiate 하자. @Repository 또는 @Component 라고. 같은거지만 @Repository라고 쓰는게 좀더 명시적이니까 그렇게 쓰자.
  • PersonService는 @Service 라고 써주고
  • PersonDao로 PersonService를 인젝트 하니까 @Autowire ...?
  • PersonDao는 구현방법이 다양하므로.. @Qualifier("fakeDao") 라고 변수앞에 적어주고, @Repository("fakeDao") 라고 적어준다. ...??
  • REST CRUD api 연결해주자. @RestController라고 넣어주고 클라이언트가 만나는 endpoint를 연결해준다. addPerson을 post request랑 연결하려면?
  • addPerson 함수 위에 @PostMapping 적어준다. 그리고 Person 모델 객체가서 id에 프로퍼티 넣어준다 @JsonProperty("id"), @JsonProperty("name") 이렇게 연결.
  • 근데 입력값이 Json -> person mapping 된단거 알려줘야한다 -> @RequestBody 어노테이터를 달아야한다.
  • 그리고 api 중간경로를 만들어주려면 @RequestMapping("api/v1/person") 으로 경로설정.
  • 이제 get 해보자.
  • 이제 delete 해보자
  • select person by UUID 한담에 지우자. Streaming 사용. DB.stream().filter(person -> person.getId().equals(id)).findFirst()
  • ... .orElse(other:null) -> 없는경우 null 돌려보내주게.
  • pathvariable 수용하게 -> @PathVariable("id") 이렇게 하고 @GetMapping(path = "{id}") 이렇게하면 URL 변수를 입력가능.
  • delete 연결
  • 값 validation. @NotBlank 이런 어노테이션. 그리고 컨트롤러에서 변수에다가 @Valid @NotNull 이렇게 달수도 있고.
  • Dependency Injection 시연.
  • PersonDataAccessService 만들고 PersonDao 를 implement 하게.
  • 클래스에 @Repository("postgres") 구현체임을 알린다
  • 그리고 PersonService에서 Qualifier로 fakeDao 대신에 postgres를 입력해주면 그쪽으로 탄다.
  • 이제 jar 만드는법 설명
  • Maven projects에서 Lifecycle/install 실행하면 target 폴더가 생성된다.
  • java -jar somsomsomsosm.jar
  • postgres 연결하기. 도커로 설치.
  • application.properties -> db랑연결을 설정하는 부분임.
  • application.yml 사용하자. 그전에 db 사용할수있는 dependency 추가하기 -> pom.xml 에서 dependency 추가. groupid 는 sprinrboot. artifactId 는 spring-boot-starter-jdbc. 그리고 groupid org.postgresql, artifactid 는 postgreseql. scope는 runtime에만. 또하나는 groupid org.flywaydb, artifactId 는 flyway-core
  • 실행하면 죽는다 - datasource 설정 안된것.
  • package 만든다. datasource 만들기. PostgresDatasource 연결하기.
  • @Configuration 이라고 어노테이션 달고 hikariDatasource 에서 DatasourceBuilder.create().type(Hikaridatasource.class).build()
  • @Bean 어노테이션 달고, @ConfigurationProperties("app.datasource")
  • 빈으로 instantiate 하는거고, configuration file에 잇는 변수는 app.datasource를 쓸거라는것.
  • yaml 에 추가.
  • flywaydb? 마이그레이션? db/migration 폴더를 만든다.
  • postgre에 DB 만들고 서버 시작할때 resources/db/migration 에 있는 쿼리문을 실행한다. 이때 create person table 한다
  • UUID 때문에 CREATE EXTENSION "uuid-ossp" 해야
  • PersonDataAccessService를 실데이터 연결. JdbcTemplate 을 만든다. @Autowired로 생성될때 알아서 생성되게.
  • jdbcTemplate.query ... -> { return new Person(UUID.fromString(resultSet.getString(columnLable:"id"), resultSet.getString(columnLabel"name"))
  • DB에서 스트링 받아온담에 객체로 받아와서 표시할 수 있다
  • select 하기. query는 list를 가져온다. queryForObject 하면 sql 말고도 argument를 넣어줄 수가 있다. 쿼리문에 들어가는 변수값을 object list로 감싸서 넘겨준다.
  • Optional 해서 person을 nullable로 보내준다.
  • 이 다음은 spring boot full stack. react js랑 hook으로 프론트 만들기.

MEKA

Composed 191 Viments

15

Published on Nov 14, 2020

Send Viment

Comments 0

Viments for this video by others

There's no pre-existing Viments

Facebook Kakao Naver Twitter

Embed

Copy & Paste following HTML

Viment Text

Copy & Paste following Text