전체 글 26

[스프링 핵심 원리] 06. 의존관계 자동 주입

1. 의존관계 주입 방법기본적으로 @Autowired는 스프링 빈에만 작동한다. 순수한 자바 테스트 코드에는 작동하지 않는다.@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; ..

Spring 2025.01.21

[스프링 핵심 원리] 05. 컴포넌트 스캔

1. @ComponentScan, @Component@Configuration@ComponentScan()public class AutoAppConfig {}@Componentpublic class MemoryMemberRepository implements MemberRepository {}- 스프링은 Bean 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다.- 기존의 AppConfig와는 다르게 @Bean으로 등록한 클래스가 하나도 없다.- 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. (직접 지정도 가능) 2. @Autowired@Componentpublic class MemberServiceImpl implements MemberSer..

Spring 2025.01.20

[스프링 핵심 원리] 04. 싱글톤 컨테이너

1. 싱글톤이 없는 웹 애플리케이션public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + m..

Spring 2025.01.20

[스프링 핵심 원리] 02. 객체 지향 설계 적용 예제

1. 요구사항과 설계회원- 회원을 가입하고 조회할 수 있다.- 회원은 일반과 VIP 두 가지 등급이 있다.- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책- 회원은 상품을 주문할 수 있다.- 회원 등급에 따라 할인 정책을 적용할 수 있다.- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.)- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루 고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 2. 회원 도메인 설계 3. 주문과 할인 도메인 설계4. 관심사의 분리DIP와 OCP를 위해 애플리케이션의 전체 동작 방식..

Spring 2025.01.16

[스프링 핵심 원리] 01. 객체 지향 설계와 스프링

스프링 생태계https://spring.io/projects Spring | ProjectsProvides core support for dependency injection, transaction management, web apps, data access, messaging, and more. 6.2.1+ 7 versionsspring.io 스프링의 핵심- 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크- 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크- 다형성을 극대화해서 이용할 수 있게 도와준다. 다형성의 본질- 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.- 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. 역할과 ..

Spring 2025.01.15

스프링 공부 계획 변경

원래는 이 강의를 듣고 Spring으로 간단한 프로젝트를 진행하려 했었다.그러나 스프링의 내용이 워낙 방대하다 보니까 강의를 완강해도 아직 Spring이 어렵고 정리가 안된 느낌을 많이 받았다.프로젝트는 뒤로 미루고 인프런에 김영한 강사님의 스프링 강의를 통해 다시 처음부터 꼼꼼히 공부하려 한다.이런 시행착오도 있어 봐야 내가 더 성장할 거라고 믿는다.

My Page 2025.01.14

[쇼핑몰 구현 프로젝트] End. 회고/후기

그동안 강의를 보면서 공부하다가 이번에 처음으로 모르는 게 있으면 검색해보고 오류가 뜨면 고쳐보고 하면서 스스로 풀스택 웹을 만들어 보니까 그동안 강의로 배운 것이 내 것으로 만들어지는 느낌을 받았다.비록 웹사이트가 굴러가기만 하게 간단한 기능들만 만들어 본거지만 강의를 들으며 공부할 때 느낀 아리까리한 기분들을 해결할 수 있었다.역시 코드는 직접 짜봐야 제맛이다. 프로젝트를 진행하면서 느낀점1. 보안문제보안 관련 코드를 작성하면서 어떤 걸 어떻게 막아야 할지 감이 잘 잡히지 않았다.특히 Frontend와 Backend가 연동되어 있어 중복으로 막는 작업을 하기가 쉽지가 않았다.이 문제는 앞으로 공부하면서 유저들의 변칙적인 사용으로 인한 보안문제 사례들을 많이 접해보고 보안 관련 코드를 짜는 경험들을 쌓..