반응형

Spring 5

[Spring] 스프링 AOP 개념, 실행 과정(프록시 생성, 의존관계 변경)

AOP Aspect Oriented Programming 공통 관심 사항(cross-cutting concern)과 핵심 관심 사항(core concern)의 분리 공통 관심 사항을 따로 두고 원하는 곳에 마음대로 적용시키는 것 예) 메서드 시간 측정을 하고 싶을 때, 메서드에 일일이 시간 측정 코드를 다 작성하는 것이 아닌 따로 하나 만들어 두고 원하는 곳에 적용할 수 있도록 해주는 기술 @Aspect로 AOP 사용 @Component로 스프링 컨테이너에 등록 @Around로 적용시킬 범위를 설정 AOP에 의한 프록시 생성과 의존 관계 변경 기존 의존관계 실제 컨트롤러 -> 실제 서비스 -> 실제 리포지토리 AOP로 인해 프록시가 생성되어 변경된 의존관계 프록시 컨트롤러 -> 실제 컨트롤러 -> 프록시..

Spring 2022.01.20

[Spring] 스프링 DB 접근 및 테스트, JPA (데이터베이스, 테스트코드, JPA, 스프링 데이터 JPA)

스프링 DB 접근 방법 순수 JDBC 리포지토리 구현 JDBC Template 사용 JPA 스프링 데이터 JPA 1. 순수 JDBC 리포지토리 구현 - 이 부분을 정리해볼까 하다가 엄청 옛날 기술이고 앞으로 쓸 일도 많이 없을 거 같아서 생략하려고 합니다 - 예전에 JSP에서 썻던 기억은 있네요. 2. 기존 코드에서 DB만 변경 객체 지향의 다형성을 활용한 방법 개방-폐쇄 원칙 : 확장에는 열려있고, 수정, 변경에는 닫혀있다. 기존 코드 변경 없이 설정만 바꿔주어 DB를 변경할 수 있다. 3. 스프링 통합 테스트 @SpringBootTest : 스프링 컨테이너와 함께 테스트를 실행한다. @Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 롤백. DB에 데이터가 남지 않..

Spring 2022.01.20

[Spring] 스프링 빈과 의존관계 (스프링 빈에 등록하는 방법, 컴포넌트 스캔, 자바 코드)

스프링 빈에 등록하는 목적 스프링 컨테이너 안에 스프링 빈을 등록하여 컨트롤러가 리포지토리와 서비스를 사용할 수 있도록! 스프링 빈을 등록하는 방법 컴포넌트 스캔과 자동 의존관계 설정 (@Component -> @Service, @Repository...) 자바 코드로 직접 스프링 빈 등록 1. 컴포넌트 스캔 방식 @Component 애노테이션 : 스프링 빈으로 자동 등록해줌 @Controller, @Service, @Repository은 기본적으로 @Component를 포함하고 있음 그래서 @Controller, @Service, @Repository만 써도 스프링 빈에 등록이 됨 장점 : 쓰기에 편하다. 예시) 참고 : 스프링 빈에 등록하기 위해 @Component을 스캔하는 경로 범위는 실행 파일에..

Spring 2022.01.18

[Spring] 스프링 기본적인 백엔드 개발 예제 및 테스트 (기본적인 구조, 간단한 테스트 케이스 작성)

일반적인 웹 애플리케이션 계층 구조 컨트롤러 : MVC에서 컨트롤러 역할 서비스 : 핵심 로직, 알고리즘을 구현하는 곳 리포지토리 : DB에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체, DB에 저장될 객체들, 회원이나 주문 등 컨트롤러 -> 서비스 -> 레포지토리 -> DB 순으로 접근 컨트롤러, 서비스, 레포지토리에서 도메인으로 접근 가능 생성한 예제 클래스들, 기본적인 구조 컨트롤러, 리포지토리, 서비스, 도메인 객체 생성 테스트 코드 작성 간단한 테스트 코드 작성 assertThat() 이용해서 비교 given, when, then으로 나누어서 작성해줄 수 있음 테스트 코드를 여러 개 작성 시 @AfterEach의 콜백 함수를 써줘야 함 테스트 코드들은 기본적으로 의..

Spring 2022.01.17

[Spring] 스프링 웹 개발의 기본 동작 원리, 개발방법 (정적, MVC, API)

스프링으로 웹을 개발하는 세 가지 방법 정적 컨텐츠 MVC, template API 1. 정적 컨텐츠 방식 html 파일을 그대로 웹브라우저로 내려주는 방식 static 경로에 저장하여 사용 => 예) resource/static/파일이름.html 실행 시 파일 이름을 그대로 붙여서 실행 => 예) http://localhost:8080/파일이름.html 웹브라우저 주소 호출 -> 내장 톰캣 서버(스프링 부트) -> 스프링 컨테이너(어? 관련 컨트롤러가 없네?라고 인식) -> static 폴더로 가서 해당하는 파일을 찾음 -> 그대로 실행 2. MVC, template(템플릿) 가장 많이 쓰는 방식 html을 동적으로 바꿔서 주는 방식 동적으로 바꾸는 방식을 model, view, controller로 ..

Spring 2022.01.16
반응형