728x90

전체 글 503

188일차(모험 97일차) - 싱글톤 패턴

[add] 싱글톤 패턴 [#21] #23 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 한 자바 서버 안에서는 객체 인스턴스가 하나만 생성이 된다. 결론은 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다 SingletonService public class SingletonService { private static final SingletonService instance = new SingletonService(); } public class SingletonService { private static final SingletonService instance = new Si..

TIL 2022.03.21

27주차 - 스터디(BeanDefinition , 싱글톤)

스프링 빈 설정 메타 정보 - BeanDefinition 스프링에서 어떻게 다양한 설정 형식을 지원할 수 있을까? BeanDefinition 이라는 추상화가 그 중심에 있다. 역할과 구현을 개념적으로 나눈다. - XML을 읽어서 BeanDefinition을 만들면 된다. - 자바 코드를 읽어서 BeanDefinition을 만들면 된다. - 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 된다. 오직 BeanDefinition만 알면 된다. BeanDefinition 을 빈 설정 메타정보라 한다. - @Bean , (xml) 당 각각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다. 스프링 컨테이너 자체는 BeanDefinition에만 의존한다. 스프링 컨테..

WIL 2022.03.20

This version of ChromeDriver 에러

chromedriver를 이용해 프로그램을 실행하려고 하니 This version of ChromeDriver only supports Chrome version 96 Current browser version is 99.0.4844.74 라는 에러가 떴다. 기존 chormedriver 버전을 삭제하고 새로 다운받아 실행했더니 에러가 뜨지 않았다. selenium BeautifulSoup를 사용하면 로그인이 필요한 웹페이지에서는 크롤링을 할 수 없다. Terminal에서 모듈 설치 pip install selenium _ 웹 브라우저를 원격 조정해주는 모듈 마치 사용자가 직접 뭔가를 타이핑, 클릭하는 것처럼 만들어 줄 수 있다. 크롬 브라우저 들어간 후 크롬 드라이버 검색 후 다운 컴퓨터에 설치되어있는 ..

요약 정리 2022.03.18

185일차(모험 94일차) - 다양한 설정 형식 지원 - 자바 코드, XML

[add] 다양한 설정 형식 지원 - 자바 코드, XML [#13] #19 이 전까지는 자바 코드로 설정하는 법을 배웠는데 이번에는 XML로 설정하는 법을 배워봤다. (아 이렇게 동작하는 구나 정도로만 알면 될듯하다.) ApplicationContext를 구현한 것 중에 하나가 이 전에 사용했던 AnnotationConfig 설정 정보를 사용하는 ApplicationContext 라고 보면 된다. (AppConfig class를 사용함) - 주로 사용 ApplicationContext를 구현한 것 중에 GenericXml ApplicationContext도 있다. 자바 코드가 아니라 xml이라는 문서를 설정 정보로 사용한다. 어노테이션 기반 자바 코드 설정 사용 new AnnotationConfigApp..

TIL 2022.03.18

184일차(모험 93일차) - 정리 + BeanFactory와 ApplicationContext

Test 코드 정리 스프링 컨테이너 생성 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); 정리를 하다보니 이 전에는 아래와 같이 작성하셨는데 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 이후에는 아래와 같이 작성을 하셨다. AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 이유가 궁금해서 검색을 해보니 아래와 같은 이유로 사용을 하셨다. ApplicationC..

TIL 2022.03.17

183일차(모험 92일차) - 스프링 빈 조회 - 상속 관계

[add] 스프링 빈 조회 - 상속 관계 [#13] #18 부모 타입으로 조회하면, 자식 타입도 함께 조회한다. 그래서 모든 자바 객체의 최고 부모인 Object 타입으로 조회하면, 모든 스프링 빈을 조회한다. public class ApplicationContextSameBeanFindTest { } 위 클래스도 눈에 안보이지만 사실은 아래 코드와 같다. public class ApplicationContextSameBeanFindTest extends Object { } 눈에 안보이면 자동으로 Object 코드가 들어간다고 보면 된다. AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.cla..

TIL 2022.03.16

182일차(모험 91일차) - 스프링 빈 조회 - 동일한 타입이 둘 이상

[add] 동일한 타입이 둘 이상 [#13] #17 중복을 만들기 위해서는 AppConfig에 손을 대야한다. 손을 대지 않고 Config 파일을 새로 만든다. 기존에는 아래코드를 사용했지만 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); ⬇️ 이번 테스트에서는 Config 파일을 새로 만들 것이기 때문에 AppConfig 대신 새로운 Config 작성 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); Config 만들기 @Configuration s..

TIL 2022.03.15

181일차(모험 90일차) - 스프링 빈 조회 - 기본

스프링 빈 조회 - 기본 [#13] #16 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법 • ac.getBean(빈이름, 타입) • ac.getBean(타입) 조회 대상 스프링 빈이 없으면 예외 발생 NoSuchBeanDefinitionException: No bean named 'xxxxx' available 빈 이름으로 조회 한 번 출력시켜보기 @Test @DisplayName("빈 이름으로 조회") void findBeanByName() { MemberService memberService = ac.getBean("memberService", MemberService.class); System.out.println("memberService = " + memberService); S..

TIL 2022.03.14

26주차 - 컨테이너에 등록된 모든 빈 조회

컨테이너에 등록된 모든 빈 조회 [#13] #15 * junit5부터는 public 설정을 안해도 된다. (3개 예시 중 아무거나 써도 상관 없다.) public class ApplicationContextInfoTest { void findAllBean() { } } public class ApplicationContextInfoTest { public void findAllBean() { } } class ApplicationContextInfoTest { void findAllBean() { } } @Test @DisplayName("모든 빈 출력하기") void findAllBean() { // 정의된 이름을 등록 String[] beanDefinitionNames = ac.getBeanDefin..

WIL 2022.03.13

178일차(모험 87일차) - 스프링 컨테이너 생성

이 전 글 보기 >> 176일차(모험 85일차) - 스터디 4 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ■ ApplicationContext 는 인터페이스이다. → 다형성이 적용이 된다. ■ 스프링 컨테이너는 XML을 기반으로 만들 수 있고, ( → 요즘에는 사용안함 ) 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. ■ 직전에 AppConfig 를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. ■ 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들어본다. • new..

TIL 2022.03.11