일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 의존관계
- objecterror
- 다형성
- 서블릿
- 백준
- html form
- @configuration
- equals()
- 코드트리
- 티스토리챌린지
- JSON
- 오블완
- DI
- 코딩테스트
- 추상클래스
- 프록시
- 스프링
- 테스트코드
- HttpServletResponse
- fielderror
- 참조변수
- java
- 스프링컨테이너
- 코드트리조별과제
- 김영한
- http 메시지 컨버터
- 오버라이딩
- 싱글톤
- ocp
- 인터페이스
- Today
- Total
목록전체 글 (168)
minOS
웹 애플리케이션과 싱글톤 - 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. - 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 아닌 애플리케이션 개발할 수 있다. - 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 문제 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청할 때마다 객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 100개의 객체가 생성되고 소멸된다 -> 메모리 낭비가 심하다. 해결방안은 해당 객체가 1개만 생성되고,공유하도록 설계하면 된다. -> 싱글톤 패턴 public class SingletonTest { @Test @DisplayName("스프링이 없는 순수한 DI 컨테이너") void pureContainer(){ AppConf..
스프링 빈 설정 메타 정보 - BeanDefinition 새로운 형식의 설정 정보가 추가되면 XxxBeanDefinitionReader를 만들어서 "BeanDefiniton"을 생성하면된다. BeanDefiniton 정보 - BeanClassName : 생성할 빈의 클래스 명 (자바 설정처럼 팩토리 역할의 빈을 사용하면 없음) - factoryBeanName : 팩토리 역할의 빈을 사용할 경우 이름 ex) appConfig - factorymethodName: 빈을 생성할 팩토리 메서드 지정 ex) memberService - Scope: 싱글톤(기본값) - lazyInit: 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라 , 실제 빈을 사용할 때 까지 최대한 생성을 지연처리 하는지 여부 - In..
BeanFactory와 ApplicationContext BeanFactory - 스프링 컨테이너의 최상위 인터페이스다. - 스프링 빈을 관리하고 조회하는 역할을 담당한다. - getBean()을 제공한다. - 지금까지 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext - BeanFactory 기능을 모두 상속받아 제공한다. - Bean을 관리하고 검색하는 기능은 BeanFactory가 제공해주는데, 둘의 차이는 ? - 애플리케이션을 개발할 때는 빈은 관리하고 조회하는 기능은 물론이고, 수 많은 부가 기능이 필요하다. 1) 메세지 소스를 활용한 국제화 기능 웹사이트 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력 2) 환경 변수 로컬,개발,..
스프링에 등록된 모든 빈 조회 class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean(){ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + bean..
ch7-42 내부 클래스(inner class) 예시 class A { // B의 외부 클래스 class B { //A의 내부 클래스 } } 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일 수 있다.(캡슐화) 실습 내부 클래스 사용 X) class A { int i = 100; B b = new B(); } class B{ void method(){ A a = new A(); System.out.println(a.i); } } class C{ B b = new B(); } public class Main { public static void main(String[] args) { B b = new B(); b.method(); } } 출력..
스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 1) ApplicationContext를 스프링 컨테이너이고 인터페이스다. 2) 스프링 컨테이너는 XML 기반으로 만들 수 있고 , 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 3)'new AnnotationConfigApplicationContext(AppConfig.class);' 이 클래스는 ApplicationContext의 구현체이다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 1)new AnnotationConfigApplicationContext(AppConfig.class); 2..