본문 바로가기

분류 전체보기296

[SpringCore 핵심원리] IoC, DI, Container 1. IoC(제어의 역전) - 프로그램흐름의 제어를 구현객체가 아닌 외부에서 담당한다. - AppConfig에서 @Configuration 애너테이션 밑에 @Bean 애너테이션을 달면 스프링Bean으로 등록이 가능하다. - 아래처럼 ApplicationContext를 이용하면 스프링컨테이너에 빈으로 등록이 가능하다 - ApplicationContext 는 스프링컨테이너다. (인터페이스다) - 스프링컨테이너는 @Configuration이 붙은 애를 설정(구성) 정보로 사용한다. @Bean이라 적인 메서드를 모두 호출해서 반환된 객체를 스프링컨테이너에 스프링빈으로 등록한다. - @Bean 이름이 붙은 메서드의 이름을 사용한다(변경 가능하긴함) - applicationContext.getBean()으로 스프링.. 2024. 2. 17.
[SpringCore 핵심원리] Config 1. OrderApp 실행 보면서 역할과 책임의 분리 확인하기 - MemberService에서는 Member관리 - OrderService에서는 Order관리를 해야지 - OrderService에서 할인 관련한건 createOrder할 때 할인정책을 정하는 객체한테 가서 해달라고 하면 됨 2. 만약 할인정책을 업데이트하게되면 ? - DiscountPolicy Interface의 구현체를 바꾸면 되는군! - DiscountPolicy의 구현체 생성 - 근데 할인정책을 변경하려면 클라이언트인 OrderServiceImpl 코드를 고쳐야한다(OCP 위반) - 클라이언트가 직접 구현체의 선택까지 해야하는가 ? - 실제 클라이언트는 구현체 또한 의존을 하고있다!(DIP 위반) - 이러면 안되는딩! 3. 해결 방안.. 2024. 2. 16.
[SpringCore 핵심원리] 설계 1. 비즈니스 요구사항 - 회원 : 회원을 가입하고 조회할 수 있따. : 회원에는 일반과 VIP 두가지 등급이 있다. : 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다(TBD) - 주문과 할인 정책 : 회원은 상품을 주문할 수 있다. : 회원 등급에 따라 할인 정책을 적용할 수 있다. : VIP는 1000원 할인해주는 고정 금액 할인을 적용(TBD) : 할인정책은 변경 가능성이 높다. 2. 설계 - 회원 도메인 : 클라이언트 -> 회원서비스 -> 회원저장소(interface) - 인터페이스 설계가 핵심 - Service에서 MemberRepository memberRepository = new MemoryMemberRepository(); - new ~ 부분이 DIP 위반이다.. 2024. 2. 16.
[SpringCore 핵심원리] 시작 1. 스프링의 탄생 - 기술의 핵심 컨셉 : 객체지향언어 Java의 특징을 살려낸다. : 객체 지향 프로그래밍의 적용 - 다형성 : 역할(interface)과 구현(클래스/인스턴스)으로 분리 : 단순해지고 유연해지며, 변경이 편리해짐 : 사용자는 interface만 알면 됨. : 구현 대상의 내부 구조를 몰라도 된다 : 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다. : 인터페이스만 동일하다면 대상 자체를 변경해도 영향을 받지 않는다. : 구현보다 인터페이스가 중요하다. - 객체의 협력과 관계 : 수 많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가지게 된다. : 클라이언트에 영향을 주지 않는 변경이 가능 : 덕분에 확장이 가능한 설계가 가능 : 핵심은 interface의 안정적 설계 .. 2024. 2. 14.
[Boot3] Spring Security (실습 실패) 1. 스프링 시큐리티 - 인증/인가 해주는거 - 보안을 담당하는 스프링의 하위 프레임워크 - CSRF, 세션 고정 공격 방어 등 보안 - 스프링필터체인 방식으로 작동 - 필터가 겁나 많은데 이건 검색해보면 다 나온다. - 구현만 할거임 나는 // SecurityContextPersistenceFilter : SecurityContext를 HTTP session에 저장하거나 읽어오는 역할을 한다. // LogoutFilter : 로그아웃을 처리하는 필터 // UsernamePasswordAuthenticationFilter : 인증관리자. 폼 기반 로그인에 사용되는 필터로 사용자명과 비밀번호를 사용하여 인증을 처리한다. // DefaultLoginPageGeneratingFilter : 기본으로 설정하는 .. 2024. 2. 14.
[Boot3] 통복습 1. Controller 2. Entity 3. Service 4. DTO 2024. 2. 14.
[Boot] CRUD 기초 DTO 설계 가이드라인 2024. 2. 13.
[Boot3] 글 수정 API 구현하기 - Article Entity에서 update 메서드를 추가해준다. - dto를 추가해준다 - Service - Controller - 실행 테스트 - Test Code 2024. 2. 13.