일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- HttpServletResponse
- 프록시
- 티스토리챌린지
- html form
- objecterror
- equals()
- 다형성
- ocp
- 오블완
- java
- 테스트코드
- 오버라이딩
- fielderror
- 서블릿
- http 메시지 컨버터
- 스프링
- 인터페이스
- 코드트리
- 싱글톤
- 의존관계
- 김영한
- 코드트리조별과제
- DI
- 참조변수
- 코딩테스트
- 스프링컨테이너
- 추상클래스
- @configuration
- 백준
- JSON
- Today
- Total
목록TIL/김영한의 스프링 핵심 원리 (34)
minOS
1) 인터페이스(InitializingBean,DisposableBean)import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;public class NetworkClient implements InitializingBean, DisposableBean { private String url; //접속해야할 서버 url public NetworkClient() { System.out.println("생성자 호출, url: " + url); } public void setUrl(String url) { this.u..
빈 생명주기 콜백 시작데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화 종료 작업이 필요하다.스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제를 통해 알아보자 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 실제로 네트워크에 연결하는 것은 아니고, 단순히 문자만 출력하도록 했다. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야하고, 애플리케이션이 종료되면 disconnect()를 호출해서 연결을 끊는다.예제public class NetworkClient { private ..
조회한 빈이 모두 필요할 때의도적으로 해당 타입의 스프링 빈이 다 필요한 경우도 있다.예를들어, 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate,fix)를 선택할 수 있다고 가정해 보자.스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다.1) 모든 빈 조회public class AllBeanTest { @Test void findAllBean(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); } static class DiscountService{ p..
애노테이션 만들기 @Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다. 그래서 다음과 같이 애노테이션을 만들어서 문제를 해결할 수 있다. 애너테이션 정의 package com.example.core.annotation; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import java.lang.annotation.*; @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType..
문제 - 조회된 빈이 두개 이상일때 @Autowired는 타입으로 조회한다. @Autowired private final DiscountPolicy discountPolicy; 타입으로 조회하기 때문에 스프링 빈에서 학습했듯이, 타입으로 조회하면 빈이 2개 이상일 때 문제가 발생한다. DiscountPolicy의 하위 타입인 FixDiscountPolicy,RateDiscountPolicy 둘 다 스프링 빈으로 선언하면 @Component public class RateDiscountPolicy implements DiscountPolicy{} @Component public class FixDiscountPolicy implements DiscountPolicy {} 이 상태에서 의존관계 자동 주입을..
롬복 프로젝트에 추가하는 법 https://devgoat.tistory.com/14 [Spring Boot] Lombok 추가하기. (Intellij, Gradle) ■ 목표 - Spring Boot 프로젝트에 Lombok을 추가한다. ■ 사용 툴 - Intellij Ultimate 버전. - SpringBoot는 Gradle 사용. 1. build.gradle 파일에 의존성 추가. build.gradle 파일 dependencies에 아래 의존성을 추가한다. imp devgoat.tistory.com 생성자 주입은 전부 불변이고, 생성자에 final 키워드를 사용하고, 생성자를 만들고, 주입받는 코드를 만들어야한다. @Component public class OrderServiceImpl impleme..