ApplicationContext는 EnvironmentCapable 인터페이스를 상속해 environment를 제공한다.EnvirionmentCapable 인터페이스 내용은 다음과 같다.Environment는 애플리케이션의 개발 환경, 테스트 환경, 운영 환경 등을
소트웍스 앤솔러지 (저 소트웍스, 마틴 파울러 | 역 이창신 외 4명 | 위키북스 |2009) 의 6장 객체지향 생활 체조 부분에서, 실생활에서 좋은 객체지향 설계 습관을 기를 수 있는 훈련을 소개 한다. 평소 보다 훨씬 엄격한 코드 작성 표준을 제시함으로써 객체지향적
@PostConstruce 애노테이션이 적용된 메소드 호출Bean이 InitializingBean 인터페이스 구현시 afterPropertiesSet 호출@Bean 애노테이션이 initMethod에 설정한 메소드 호출@PreDestroy 애노테이션이 적용된 메소드 호출
스프링 공식문서에서 총 6개의 빈 스코프를 볼 수 있다.기본적으로 싱글톤 스코프를 가진다.다음과 같이 같은 빈에 대해서 equal 비교를 했을 때 true 결과를 볼 수 있다.스코프를 임의로 변경할 수 있는데 @Scope 어노테이션을 이용해 바꿀 수 있다.아래와 같이
컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능이다.설정 클래스에 빈으로 직접 등록하지 않아도 원하는 클래스를 빈으로 등록할 수 있다.Stereotype 애노테이션을 이용하면 스캔대상을 지정한다.스프링에서는 @Component, @Controll
A -> B 를 참조하고, B -> A를 참조할 경우 순환 의존관계를 형성한다.이는 BeanCurrentlyInCreationException을 발생한다.다음은 순환 의존관계를 가지는 코드다.실행하면 다음과 같이 오류를 볼 수 있다.애플리케이션을 실행하면 이제 스프링
IoC는 다양한 방법으로 만들 수 있다.전략 패턴, 서비스 로케이터 패턴, 팩토리 패턴, 의존관계 주입 패턴들이 있다.지금까지 쓴 생성자를 통해서 객체를 주입받는 패턴을 생성자 주입 패턴(DI)이라고 부른다.스프링은 생성자 주입을 권장한다.애플리케이션 구성 요소를 불변
IoC 컨테이너는 객체에 대한 생성과 조합이 가능하게하는 프레임워크다.스프링에서는 IoC 컨테이너를 ApplicationContext인터페이스로 제공한다.ApplicationContext는 BeanFactory를 상속한다.객체에 대한 생성, 조합, 의존관계 설정 등을
제어의 역전이란 이런 제어의 흐름의 역전이 되는것을 말한다 . IoC 상황에서는 객체가 자신이 사용할 개체를 스스로 선택하지 않고 스스로 생성도 하지 않는다 .라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어하지만 프레임워크는 거꾸로 애플리케이션
어떤 객체가 협력하기 위해 다른 객체를 필요로 할 때 두 객체 사이의 의존성이 존재하게 된다.의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다. 컴파일타임 의존성: 코드를 작성하는 시점에서 발생하는 의존성. 클래스 사이의 의존성.런타임 의존성: 애플리케이션이
인터페이스는 다음과 같다.class 대신 interface라는 선언을 쓰고, 메소드는 바디 없이 세미콜론으로 마무리 된다.위에서 보듯이 메소드의 몸체가 비어 있는 메소드를 가리켜 추상 메소드라 한다.인터페이스를 대상으로는 인스턴스 생성이 불가능하다.클래스가 인터페이스를
=> 오버로딩의 정의는 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.오버로딩을 사용하는 이유1\. 같은 기능을 하는 메소드를 하나의 이름으로 사용할
=> 절차 지향 프로그래밍(Procedural Programming)순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법장점코드의 가독성이 좋다.코드를 단위화 할 수 있다.컴퓨터의 처리구조와 비슷해 실행 속도가 빠르다.단점각각의
엘라스틱서치는 전문 검색을 지원하기 위해 역인덱싱을 사용한다.전문 검색은 문자열에서 부분 검색을 수행하는 것이다.엘라스틱서치는 캐릭터 필터, 토크나이저, 토큰 필터로 구성되어 있는 분석기 모듈을 가진다.캐릭터 필터입력받은 문자열을 변경하거나 불필요한 문자들을 제거한다.
=> 웹 서버는 http 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 한다.웹 서버의 임무는 대표적으로 다음과 같다.단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다.사용자로부
=> @SpringBootTest를 사용하게 되면 웹 애플리케이션 컨텍스트에 대한 모든 구성이 로드된다.애플리케이션의 모든 Bean을 스캔해 로드하기 때문에 실제 환경과 동일하게 테스트 할 수 있으나, 시간이 오래걸린다.주로 통합 테스트에서 사용되는 애노테이션이다.=>
Parameter는 메소드를 정의할 때 사용되는 변수를 의미한다.Argument는 실제로 메소드를 호출할 때, 넘기는 변수값을 의미한다.프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나
=> MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할한다.각각의 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성한다.모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture(모놀리식 아키
=> DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다.=> 의존성이란 한 객체가 다른 객체
⇒ OOP란 컴퓨터 프로그래밍 방법론이다. 프로그램을 명령어의 목록이 아닌 여러 개의 독립된 단위인 객체들의 상호작용으로 프로그램을 구성하는 프로그래밍 방법이다. 객체들은 메시지를 주고 받으며 데이터를 처리한다.⇒ OOP의 특징으로는 캡슐화, 정보 은닉, 다형성, 추상