Dev

Dev/Spring

[Spring] 스프링 컨테이너 생성 및 조회

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이다. (다형성 적용) 스프링 컨테이너는 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너의 생성 과정 1. 스프링 컨테이너 생성 new AnnotationConfigApplicationContext(AppConfig.class); 스프링 컨테이너를 생성할 때는 구성 정보를 지정해 주어야 하며, AppConfig.cla..

Dev/Java

[Java] Checked Exception vs. UnChecked Exception

Checked Exception (확인 예외) 잘못된 코드가 아닌 잘못된 상황에서 발생하는 예외 파일 열기와 같이 정확한 코드를 구현했음에도, 외부 환경(파일이 없는 상황 등)에 따라 발생 가능 예외처리를 구현하지 않으면 컴파일 에러 발생 RuntimeException 이외의 예외들 Unchecked Exception (미확인 예외) 런타임 시 잘못 구현된 코드로 인해 발생하는 예외 컴파일 에러가 나지 않지만 적절한 예외처리가 없을 경우 프로그램이 강제 종료 컴파일 시 확인하지 않기 때문에 미확인 얘외 RuntimeException 에 포함되는 예외들

Dev/Spring

[Spring] 정적인 클래스 의존관계 vs. 동적인 객체 인스턴스 의존 관계

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. 의존관계는 정적인 클래스 의존관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존관계로 분리해서 생각해야 한다. 정적인 클래스 의존관계 클래스가 사용하는 import 코드만 보고 의존관계를 쉽게 판단할 수 있다. 정적인 의존관계는 애플리케이션을 실행하지 않아도 분석할 수 있다. by 클래스 다이어그램 하지만 클래스 의존관계만으로는 실제 어떤 객체가 클라이언트 코드에 주입될지 알 수 없다. 동적인 객체 인스턴스 의존관계 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계다. 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결..

Dev/Spring

[Spring] AppConfig와 제어의 역전(IoC)

인프런 김영한 선생님의 스프링 핵심 원리 강의를 보고 정리한 내용입니다. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private static MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } private DiscountPolicy discountPolicy..

Dev/Spring

[Spring] OCP, DIP를 위반하는 클라이언트 코드 고치기 (feat. DI)

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. OCP, DIP는 아래 글에 정리해 두었다. https://yooooooni.tistory.com/36 [SOLID] 좋은 객체지향 설계의 5가지 원칙 단일 책임 원칙 (SRP, single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 yooooooni.tistory.com 회원 도메인 설계의 문제점 이 코드의 설계상 문제점은 무엇일까? 다른 저장소로 변경할 때 OCP 원칙을 잘 준수할까? DIP를 잘 지키고 있을까? NO 의존관계가 인터페이스뿐만 아니라 구현까지 모두 의존한다는 문제점..

Dev/Java

[Java] 얕은 복사 vs. 깊은 복사

얕은 복사로 객체를 넘겨주게 되면 주소를 공유하게 되어 실제값 변경에 영향을 미친다는 것을 알게 되었다. 이후 문제를 푸는 과정에서 객체를 반환할 때 list 대신 new ArrayList(list)를 반환하는 등 객체를 새로 생성해서 반환하도록 구현했다. 이번 기회에 얕은 복사가 일어나는 동작 원리에 궁금증이 생겨 두 복사의 차이점을 정리하고자 한다. 얕은 복사 (Shallow Copy) 먼저 테스트를 위해 학생 클래스를 만들어 주었다. 이름과 학년을 멤버 변수로 가지며, 이름과 학년을 변경할 수 있는 메서드를 가지고 있다. 학생 타입의 jiyoon 객체를 먼저 생성해준 뒤 copy에 jiyoon을 대입해 주어 얕은 복사를 진행하였다. 이후 copy를 통해 이름과 학년을 변경하면 어떻게 될까? jiyo..

Dev/Java

[SOLID] 좋은 객체지향 설계의 5가지 원칙

단일 책임 원칙 (SRP, single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 예) UI 변경, 객체의 생성과 사용을 분리 개방-폐쇄 원칙 (OCP, Open/closed principle) ⭐️⭐️⭐️ 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 활용하여 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다. OCP의 문제점 MemberService 클라이언트가 구현 클래스를 직접 선택한다. 구현 객체를 변경하려면 클..

Dev/Spring

[Spring] 스프링이란?

인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다. 스프링이란? 스프링이란 여러 가지 기술들의 모음이며, 스프링 프레임워크, 스프링 부트, 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치 등이 있다. 해당 기술들에 대한 정보는 아래 사이트에서 확인할 수 있다. https://spring.io/projects Spring | Projects Projects From configuration to security, web apps to big data—whatever the infrastructure needs of your application may be, there is a Spring Project to help you build it. St..

yo0oni
'Dev' 카테고리의 글 목록 (5 Page)