Spring(71)
-
Spring Security
◎ Spring Security -> spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authoriztion / 권한 부여) 기능을 지원하는 보안 프레임워크 -> 스프링 시큐리티를 이용해 보안의 기능을 사용할 수 있다. -> 스프링 시큐리티의 보안 기능을 통해 토큰 기반 인증, OAuth2 기반 인증 등의 다양한 사용자 인증 기능을 적용할 수 있고, 애플리케이션 사용자의 역할에 따른 권한 레벨을 적용할 수 있으며 ,애플리케이션에서 제공하는 리소스에 대한 접근 을 제어할 수 있다. 또한, 민감한 정보에 대해서는 암호화를 적용하여 데이터를 보호할 수 있다. 이러한 보안 기능을 사용하여 웹 보안 공격을 차단한다. ◎ Spring Security 용어 -> Principal(주체..
2023.03.16 -
애플리케이션 빌드/실행/배포
◎ 애플리케이션 빌드 -> IntelliJ IDE를 이용한 빌드 -> Gradle 빌드 툴에서 bootJar나 build를 더블 클릭하면 된다. -> 정상적으로 빌드가 종료되면 build/libs 디렉토리에 Jar파일이 생성된다. -> Jar 파일은 로컬 pc에서 실행 가능한 애플리케이션 실행 파일이다. ※ build vs bootJar build : build 태스크를 실행하면 Gradle에서 빌드와 관련된 모든 task들을 실행한다. 또한 실행 가능한 Jar파일 이외에 plain Jar파일을 하나 더 생성한다. bootJar : 빌드와 관련된 모든 task를 실행하는 것이 아니라 애플리케이션의 실행 가능한 Jar파일을 생성하기 위한 Task만 실행한다. ◎ Gradle Task를 이용한 빌드 -> I..
2023.03.10 -
TDD(Test Driven Development)
◎ TDD -> 테스트 주도 개발이라는 의미로 테스트를 먼저 구현하고 구현을 하는 방식 -> 모든 조건에 만족하는 테스트를 먼저 진행하고, 조건에 만족하지 않는 테스트를 단계적으로 진행하여 실패하는 테스트를 점차 줄여나가는 방식이다. -> 예시 상황으로 패스워드 검증 테스트를 한다고 가정한다. 패스워드의 조건으로 8~20 사이의 길이, 알파벳 대/소문자 + 숫자 + 특수문자의 조합, 알파벳 대/소문자와 숫자 제외 나머지 문자는 특수문자라고 가정한다. -> 최초 테스트 메서드만 선언을 하면 실행 결과는 passed다. -> 이후에 테스트 코드를 작성하면 아직 PasswordValidator 클래스가 존재하지 않아 테스트에 실패한다. -> PasswordValidator 클래스를 작성하고, 해당 클래스에 v..
2023.03.08 -
Mockito
◎ Mock -> 테스트에서 mock은 가짜 객체를 의미한다. -> 단위 테스트나 슬라이스 테스트 등에 mock 객체를 사용하는 것을 mocking이라 한다. ※ 테스트에서 Mock 객체는 왜 쓸까? - mock 객체를 사용하지 않고 MemberController의 postMemberTest를 실행하면 postMember() 핸들러 메서드 쪽만 테스트를 하는 것이 아니라 서비스 계층을 거치고, 데이터 액세스 계층을 거쳐 db까지 거치기 때문에 테스트를 원하는 계층에서만 테스트를 할 수 없다. 이는 비효율적이다. - Mock객체를 사용하여 MemberControllerTest를 하면 MemberService의 createMember()를 호출하지 않고, MockMemberService의 createMemb..
2023.03.08 -
단위 테스트(Unit Test)
◎ 테스트 -> 어떤 대상에 대해 일정 기준을 정하고, 그 대상이 기준에 부합하는지 검증하는 과정 -> 기능 테스트 : 주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션에 제공하는 기능이 올바른지 테스트하는 것, api 툴이나 db가 연관 되어있다. -> 통합 테스트 : 클라이언트 측 툴 없이 개발자가 작성한 테스트 코드를 실행시켜 이루어진다. 애플리케이션을 만든 개발자가 테스트의 주체. -> 슬라이스 테스트 : 애플리케이션을 특정 계층으로 나눠서 테스트하는 방식. api 계층, 서비스 계층, 데이터 액세스 계층이 각각 슬라이스 테스트의 대상이 될 수 있다. ◎ 단위 테스트 -> 위의 테스트들은 모두 테스트의 대상이 api 툴, db에 연관되어 있어 독립적으로 테스트의 대상만 테스트하지 않는다. ..
2023.03.06 -
Spring Data JDBC 기반의 도메인 엔티티 및 테이블 설계
◎ DDD(Domain Driven Design) -> 도메인 주도 설계라는 뜻으로 도메인 위주의 설계 기법이다. ◎ 도메인 -> 비즈니스적인 업무를 담당하는 영역을 의미한다. -> 주문 애플리케이션에서 소비자가 물건을 주문하는 과정, 준비된 물건을 배송하는 과정 등의 도메인 지식들을 서비스 계층에서 비즈니스 로직으로 구현한다. -> 도메인은 현실 세계에서 접하는 업무의 영역이다. ◎ 애그리거트(Aggregate) -> 비슷한 업무 도메인들의 묶음이다. -> 애그리거트는 비슷한 범주의 연관된 업무들을 하나로 그룹화한 것이다. -> 위 그림에서 주문 정보와 주문 커피 정보는 모두 주문과 관련된 도메인으로 이 두 도메인을 묶어 주문 애그리거트로 그룹화한다. -> Aggregate Root(애그리거트 루트)는..
2023.02.23