본문 바로가기
728x90
반응형

🍃SpringFramework80

[SpringMVC] TDD 💡 TDD (Test Driven Development) TDD란 ‘테스트 주도 개발’을 의미한다. 테스트 주도 개발(TDD)은 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존의 개발 프로세스[그림1]와 다르게 테스트케이스를 작성 한 후 실제 코드를 개발하여 리펙토링하는 절차(그림2)를 따른다. 이러한 이유로 TDD를 Test First Development라고도 한다. @Test public void 사용자를_생성한다() throws Exception { String testName = "test_name"; given(userService.save(any(User.class))).willReturn(User.builder().name(testName).type(UserType.NORMAL).bu.. 2023. 8. 19.
[SpringMVC] AOP (Aspect Oriented Programming) 💡 AOP란? Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예시 > **class A {** method a() { AAAA method a가 하는 일들 BBBB } method b() { AAAA method b가 하는 일들 BBBB } **}** **class B {** method c() { AAAA method c가 하는 일들 BBBB } **}** AOP는 여러군데서 사용되는 중복되는 코드를 떼어내서 분리하고, method a, .. 2023. 8. 19.
[SpringMVC] Transaction 💡 트랜잭션 이란? 데이터를 처리하는데 오류나 다양한 상황에 대하여 안정성을 확보하고 성공한 경우에만 반영을 해주는 것을 트랜잭션이라고 합니다. 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미합니다. 즉, 병행 제어 시 처리되는 작업의 논리적 단위입니다. Transaction은 하나의 흐름으로 하나의 실행이 성공하거나 실패하면 모든 연산들을 동일하게 처리합니다 💡 트랜잭션의 성질 ▶ 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또는 모두 실패. ▶ 일관성(Consistency) 트랜잭션은 일관성 있는 데이타베이스 상태를 유지한다. (data integrity 만족 등.) ▶ 독립성(Isolation) 동시에 실행되는 트랜잭.. 2023. 8. 19.
[SpringMVC] Bean & POJO (Plain Old Java Object) 💡 스프링 빈이란? **스프링 컨테이너(IoC)에 의해 관리되는 자바 객체(POJO)**를 빈(Bean)이라고 합니다. 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 스프링 컨테이너에 적용된다. 💡 Component 컴포넌트 스캔은 @Component를 명시하여 빈을 추가하는 방법이다. 클래스 위에 @Component를 붙이면 스프링이 알아서 스프링 컨테이너에 빈을 등록한다. 컴포넌트 스캔의 대상 @Component 외에 @Controller, @Service, @Repository, @Configuration는 @Component의 상속을 받고 있으므로 모두 컴포넌트 스캔의 대상이다. @Controller 스프.. 2023. 8. 19.
[SpringMVC] DAO & DTO & VO 💡 1. DAO(Data Access Object) DAO는 실제로 DB의 data에 접근하기 위한 객체입니다. 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다. Service와 DB를 연결하는 고리 역할을 합니다. Repository package가 바로 DAO입니다. @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id).. 2023. 8. 19.
[SpringMVC] IoC (Inversion of Control) 💡 IoC란? IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다. 스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다. 이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다. 💡 Bean과 스프링 IoC 컨테이너 스프링 IoC 컨테이너가 관리하는 객체들을 Bean 이라고 부릅니다. 스프링은 이러한 Bean들의 의존성을 관리하고, 객체를 만들어 주며, Bean으로 등록을 해 주고, 이렇게 만들어진 것들을 관리합니다. 개발자가 이 부분까지 신경쓰지 않아도, 프레임워크가 알아서 해 주는 것입.. 2023. 8. 19.
[SpringMVC] DI (Dependency Injection) 💡 의존성 주입(Dependency Injection) 이란? Spring 프레임워크는 3가지 핵심 프로그래밍 모델 (DI/IoC, PSA, AOP) 을 지원하며, 그 중 하나가 의존성 주입(Dependency Injection, DI) 이다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. public class Store { private Pencil pencil; } 그리고 두 객체 간의 관계(의존성)를 맺어주는 것을 의존성 주입이라고 하며 생성자 주입,.. 2023. 8. 19.
[SpringMVC] 데이터 변환 / 검증 💡 WebDataBinder 요청으로 넘어온 값들을 실제 객체에 binding하는 과정의 중간 역할 💡 1. 타입 변환 ex. sns=kakao&sns=daum&sns=insta는 String[]타입으로 저장되는데 binding된 파라미터가 String타입이면, “kakao, daum, insta”로 Spring이 자동 변환한다. 💡 2. 데이터 검증(Validation) 사용자 또는 서버의 요청(http request) 에서 잘못된 내용이 있는지 유효성 검사하는 단계 객체를 검증하기 위한 인터페이스. 객체 검증기(validator) 💡 BindingResult 타입 변환, 데이터 검증의 결과와 에러를 저장하여 에러가 발생하더라도 Controller에서 처리하도록 함. 매핑된 메서드의 파라미터 중, bi.. 2023. 8. 19.
[SpringMVC] 예외 처리 (Exception) 💡 예외처리 Controller레벨에서 처리 - @ExceptionHandler @RestController public class TestController { // 예외 핸들러 @ExceptionHandler(Exception.class) public String controllerExceptionHandler(Exception e) { return "/error/404"; } @GetMapping("hello1") public String hello1() { throw new TestException("hello1 에러 "); // 강제로 예외 발생 } } Global 레벨에서의 처리 - @ControllerAdvice @ControllerAdvice public class GlobalExcepti.. 2023. 8. 19.
728x90
반응형