Dev/Spring

Dev/Spring

7. 의존관계 자동 주입

강의 내용 의존관계 주입 방법은 크게 4가지다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입을 쓰면 된다는것을 기억하자 -> 불변하고, 누락 방지 가능하기 때문. 불변하다? 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다.(불변해야 한다.) 수정자 주입을 사용하면, setXxx 메서드를 public으로 열어두어야 한다. 누군가 실수로 변경할 수 도 있고, 변경하면 안되는 메서드를 열어두는 것은 좋은 설계 방법이 아니다. 생성자 주입은 객체를 생성할 때 딱 1번만 호출되므로 이후에 호출되는 일이 없다. 따라서 불변하게 설계할 수 있다. 누락방지? 생성자 ..

Dev/Spring

6. 컴포넌트 스캔

강의 복습 자동등록 이전까지는 config, xml, 혹은 사용자 지정 설정 파일로 직접 스프링 빈을 등록했었다. @ComponetScan, @Component, @Autowired 등의 사용은 이들을 편하게 자동으로 해준다. @Component 말고도 @Configuration @Service @Controller @Repository 이런것들이 붙어있어도 빈으로 등록된다 -> 사실 위 annotation 들은 @Component를 포함하고 있기 때문이다. +어노테이션이 상속을 지원하고 이런건아닌데, 스프링 쓰면 비슷하게 동작한다. 옵션 컴포넌트 스캔은 다양한 옵션이있다. FilterType이라고 한다. FilterType은 5가지 옵션이 있다. ANNOTATION: 기본값, 애노테이션을 인식해서 동작..

Dev/Spring

5. 싱글톤 컨테이너

강의 복습 싱글톤 패턴: 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. -> 그래서 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. 그래서 직접 싱글톤 패턴을 만들어 봤었다. 그런데 여러 문제가 있었다. 싱글톤 패턴 문제점: 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의존관계상 클라이언트가 구체 클래스에 의존한다. DIP를 위반한다. 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다. 테스트하기 어렵다. 내부 속성을 변경하거나 초기화 하기 어렵다. private 생성자로 자식 클래스를 만들기 어렵다. 결론적으로 유연성이 떨어진다. 안티패턴으로 불리기도 한다. ...단점이 이렇게 많다고? 하지만 스프링 컨테이너를 쓰면 단점을 모두 없에고 장..

Dev/Spring

4. 스프링 컨테이너와 스프링 빈

강의 복습 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 인터페이스에 여러가지 구현체를 대입하여 스프링 컨테이너를 생성가능하다. 등록된 스프링 빈은 설정정보를 이용, DI 가 이루어진다. 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법: ac.getBean(빈이름, 타입) ac.getBean(타입) 해당 타입 전부 조회: ac.getBeansOfType() 조회시 고려사항: 타입 조회시 같은 타입 빈이 둘 이상이면? -> 오류 부모타입으로 조회하면? -> 자식 타입 전부 조회됨. ApplicationCont..

Dev/Spring

2 & 3. 스프링 핵심 원리 이해

강의 복습 섹션 2, 3에서는 스프링 핵심 원리 이해에 관한 내용을 배웠다. 우선 스프링 없이 프로젝트를 생성 후, 불편함을 해결하다보면 왜 스프링이라는 프레임워크가 나올 수 밖에 없는지 따라갈수 있었다. JUnit을 통한 테스트 작성 방법도 배웠다. 사실 이전에 들은 스프링 입문 강의에서 듣긴했지만. 스프링의 핵심은 좋은 객체지향 프로그래밍을 쉽게 만들 수 있게 해주는것이다. 좋은 객체지향 프로그래밍은, SOLID 원칙을 준수하면 된다. config파일을 생성해서 리팩토링하면 기존 코드로만은 지키기 불가능한 SRP,OCP, DIP 원칙을 지킬 수 있다. 이 config 파일을 생성한 것이 프레임워크를 쓰면 얻는 장점과 유사하다. IoC, DI 이것들이 config 덕에 생겨났다. IoC = 제어의 역전..

Dev/Spring

1. 객체 지향 설계와 스프링 [스프링 핵심 원리-기본편]

스프링의 역사 요약: EJB -> 로즈 존슨의 책 -> 스프링 스프링 등장 전에는 EJB라는게 있었다고 한다. 그런데 사용하기에 너무 어려워서 로드 존슨이라는 사람이 이걸 지적하고, 대안을 제시하는 책을 썼다. 여기에 스프링의 핵심 철학이 담겨있었다. BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입 등등이 책의 내용이였다. 그 후 두명의 개발자와 함꼐 스프링을 만들었다. 또 DB 관련 기술로 EJB가 있었는데, 이걸 대신해서 하이버네이트가 등장했고, 스프링 개발사에서 하이버네이트를 만든 사람들을 고용하여 자바표준인 JPA를 만들었다. JPA는 표준 인터페이스이고, 하이버네이트나 다른 구현체들을 연동해서 사용한다. 스프링의 핵심 스프링은 자바 기반의 프레임..

ChoiBulldog
'Dev/Spring' 카테고리의 글 목록 (2 Page)