본문 바로가기

전체 글49

properties vs yaml Properties 1. 형식 spring.datasource.url=jdbc:h2:dev spring.datasource.username=SA spring.datasource.password=password key-value 형식을 사용한다. 2. List 구조 application.servers[0].ip=127.0.0.1 application.servers[0].path=/path1 application.servers[1].ip=127.0.0.2 application.servers[1].path=/path2 application.servers[2].ip=127.0.0.3 application.servers[2].path=/path3 값이 다른 동일한 종류의 속성이 있는 경우 배열 인덱스로 List .. 2023. 1. 27.
프로젝트 준비 1 - JPA, ResponseEntity를 활용하여 회원가입 연습하기 토큰 방식의 회원가입, 로그인을 연습하기 위해 JWT, Spring Security를 사용하고, ResponseEntity를 활용하여 Http 상태 코드 설정을 경험해보기로 했다. ※ API 서버 개발 연습을 위해 뷰 페이지 없이 POSTMAN을 활용했다. implementation 'org.springframework.boot:spring-boot-starter-web' annotationProcessor('org.projectlombok:lombok') testAnnotationProcessor('org.projectlombok:lombok') runtimeOnly 'com.mysql:mysql-connector-j' testImplementation 'org.springframework.boot:s.. 2023. 1. 19.
@SpringBootTest, @WebMvcTest, @DataJpaTest @SpringBootTest 통합 테스트를 위한 환경을 준비해주고, 모든 빈들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 실행 설정할 수 있는 값 value와 properties : 애플리케이션 실행에 필요한 프로퍼티를 key = value 형태로 추가 args : 애플리케이션의 arguments로 값 전달 classes : 애플리케이션 로딩할 때 사용되는 컴포넌트 클래스 정의 webEnvironment : 웹 테스트 환경 설정(Enum) webEnvironment의 Enum 값 MOCK 웹 기반의 애플리케이션 컨텍스트를 생성하지만 MOCK 환경으로 제공하여 내장 서버 시작X 웹 환경이 클래스 패스에 없다면 웹이 아닌 애플리케이션 컨텍스트 생성 웹 기반의 Mock 테스트를 위해 @AutoConf.. 2023. 1. 6.
JPA Auditing JPA Auditing ORM(Object Relationship Mapping) 기술인 JPA는 Application의 Entity와 DB의 Table을 매핑하여 사용한다. DB는 해당 데이터를 누가, 언제 생성 또는 수정했는지 기록하는 것이 꽤나 중요합니다. 이 데이터들은 많은 테이블에서 사용되기 때문에 Entity에도 필드로 중복되어 들어가고, 해당 Entity가 생성 또는 수정될 때마다 개발자가 신경 써서 데이터를 입력해줘야 하는 번거로움 발생 이때 사용하는 기술이 Spring Data에서 제공하는 Auditing입니다. Audit는 감독하고 검사하다는 뜻으로, 해당 데이터를 보고 있다가 생성 또는 수정이 발생하면 자동으로 값을 넣어주는 편리한 기능입니다. 1. Auditing 활성화 하기 @En.. 2022. 12. 30.
일급 컬렉션(First Class Collection) 일급 컬렉션 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태 아래의 코드를 Map map = new HashMap(); map.put("1", "A"); map.put("2", "B"); map.put("3", "C"); 아래와 같이 Wrapping 하는 것 public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } 일급 컬렉션의 이점 비즈니스에 종속적인 자료구조 Collection의 불변성을 보장 상태와 행위를 한 곳에서 관리 이름이 있는 컬렉션2 1. 비즈니스에 종속적인 자료구조 위 코드의 문제점 검증 로직이 필요한 데이터 구분 모든 코드와 도메인.. 2022. 12. 23.
XML Configuration vs Java Configuration XML Configuration 1. web.xml Deployment Descriptor(배포 서술자)라고 불리며 웹페이지의 환경 설정 부분을 담당 WAS가 최초 구동 될 때 web.xml을 읽고 그에 해당하는 설정을 구성 설정을 위한 설정 파일 스프링의 WebApplicationContext의 계층 관계는 부모-자식 관계로 이루어진 두 개의 Context가 존재 ContextLoaderListener가 부모의 역할을 수행하는 Root WebApplicationContext를 생성하고 DispatcherServlet은 자식의 역할로서 부모를 상속 받아 사용하는 Servlet WebApplicationContext를 생성 Root WebApplicationContext : Application 전역에서 .. 2022. 12. 14.
DAO, DTO, VO, Entity Entity(Domain) 데이터베이스에 쓰일 컬럼과 여러 엔티티 간의 연관관계를 정의 데이터베이스의 테이블을 하나의 엔티티로 생각해도 무방함 실제 데이터베이스의 테이블과 1:1로 매핑(하나의 값을 다른 값으로 대응) 이 클래스의 필드는 각 테이블 내부의 컬럼(열)을 의미 DAO 데이터베이스에 접근하는 객체 Service가 DB에 연결할 수 있게 해주는 역할 DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담 DTO vs VO DTO 데이터 전달용 데이터를 담아서 전달하는 바구니 getter/setter 외에 다른 로직 x VO 값 표현용 값 그 자체를 표현하는 객체 getter/setter 외의 로직을 가질 수 있다. ex) 돈 → 만원권 마다 고유번호가 달라도 모두 만원이다. MVC 패턴 사용법.. 2022. 12. 7.
인터페이스, 추상클래스, 다형성 추상 클래스 vs 인터페이스 추상클래스 추상메서드가 적어도 1개 이상인 클래스 메서드의 선언만 되어 있을 뿐 정의는 되어 있지 않은 것 extends 인터페이스 전부가 추상메서드 오로지 메서드의 선언만이 존재 즉, 명세 implements 인터페이스 왜 씀? public interface Scheduler { public void getNextCall(); public void sendCallToAgent(); } 1. 동료들과의 협업 시 어떤 기능을 하는 멤버 메서드를 만들어 달라는 명시 2. 클라이언트들도 전체 코드를 보기 보다는 인터페이스를 통해 프로그램의 전체적인 흐름을 파악 ex. 리모콘을 쓸 줄은 알아도 리모콘의 동작방법은 모르는 것 처럼… 추가 정리(StringBuffer, StringBui.. 2022. 11. 25.