-
2021.03.08 - [2021년 상반기/API] - 스프링 시작하기 #1
2021.03.09 - [2021년 상반기/API] - 스프링 시작하기 #2
위 강의를 전부 들은 뒤 필요한 부분만 따로 정리하려한다. 자세한 내용은 위 링크에서 자료까지 제공해주신다. 이건 나만을 위한 게C글 ...
- controller
- domain
- repo(springdata)
- serice
- AOP
코드 전체는 아래에 있다.
초보자의 입장에서 .. Spring 하면서 가장 중요한건 어노테이션이 아닌가싶다. 편리함을 제공하면서도 빼먹으면 에러가 난다.
1. 전체 프로젝트 구조
gradle dependencies와 appliation.properties (본 강좌 중 SpringDataJpa를 사용한 부분을 했으므로 이에 대한 디펜던시만 추가하였다.)
dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' }
spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none
2. Controller
Controller는 웹페이지 접속 맵핑이나 Form을 작성해준다.
컨트롤러 부분은 쉬워서 사실 크게 부연 설명할 필요가 없다.
자바를 너무 오랜만에(거의 4년..?) 만져서 조금 햇갈렸지만 그래도 배워놓은게 있어서 이해가 안되진 않았다.
3. Domain
도메인 부분은 아래와 같다. 주의할 점은 SpringData를 쓰기위해 어노테이션 Entity, Id를 추가해야한다는점.
강좌를 다 들은 후 혼자하다가 저 부분은 빼먹어서 에러가 났었다.
아주 오래전 getter,setter 대신 lombok을 사용했던 것이 기억난다.
4.Repository
repository에서는 인터페이스와 구현체 두 개가 존재해야한다.
강좌에서는 메모리, jpa 등 여러개를 설명해주셨다. 모두 따라해보고 가장 마지막 기술이였던 SpringDataJpa를 기록한다.
강좌중에 가장 처음 API를 직접 구현하는 부분이 있었는데, 강사님이 20년 전 고대 기술이라면서... 근데 난 그걸 학부 3학년 때 배웠다... (?)
아래 코드가 내가 SpringData를 선택한 이유다. 이미 JpaRepositroy에서 일부 주요 기능들을 제공하므로 구현할 필요가 없다.
5. Service
아래는 서비스로 실제 유저에게 제공되는 기능들이다.
울트라 에딧이나 리눅스 쉘 같은걸로 코딩하다가 이런걸로하니까 세삼 신기하다.. 다 자동이라니(ㅠ.ㅠ)
6. SpringConfiguration
Configuration도 어노테이션 달아줘야한다.
이 때 위에서 Service나 Repo 어노테이션을 달지 않고 아래 코드에서 Bean 어노테이션을 이용하여 등록할 수도 있다.
이는 사람마다 스타일이지만 난 Service, Repo 어노테이션 다는게 좋다. ( 컨트롤러는 @Controller 어노테이션 달아줘야한다. )
7. Template
아래는 그냥 화면단이다. html은 프론트에게..
8.AOP
아래보면, 언제 필요한지 말씀해주신다. 듣자마자 이마를 탁쳤다.
이건 정말 혁신적이다.. 난 이걸 일일히 메서드마다 수정했는데...
Around를 이용해서 스코프를 정할 수 있다.
4년전에 사실 스프링 글을 썼었다. 난 참 발전이 없구나싶다.. 왜이렇게 새로울까? 반성해라 위지원 -_-
'2021년 > 개발공부' 카테고리의 다른 글
python2, python3에서 tuple의 덧셈 차이 (0) 2021.03.23 AWS 인스턴스 생성하고 접속하기 (0) 2021.03.19 맥에서 Go 설치하기 (0) 2021.03.18 파이썬 유닛테스트 (0) 2021.03.18 스프링 시작하기 #2 (0) 2021.03.09