본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

Spring Series97

[Spring] Bean의 id와 name 1. Bean의 식별자 - Bean의 식별자로는 id와 name이 있다. - Bean은 2개 이상의 식별자도 가질 수 있다. Bean에게 2개 이상의 식별자를 주는 이유는 해당 bean을 사용하는 곳에 따라 다양한 이름으로 참조할 수 있도록 함으로써 이름을 짓는 관례를 모두 맞춰줄 수 있게 하기 위함이다. - Bean의 식별자는 애플리케이션 컨텍스트 내에서 고유해야 한다. 2. id와 name의 차이점 1) id - id에는 다음과 같은 작성 규칙이 존재한다. 공백이 들어갈 수 없다. 첫 글자는 알파벳, 밑줄(_), 허용된 일부 문자만 사용할 수 있다. 나머지 글자는 알파벳, 밑줄, 숫자, 점(.)을 허용하며, 그 외의 특수문자는 사용할 수 없다. - id를 생략한다면 컨테이너는 자동으로 id를 부여해준.. 2022. 6. 23.
[Spring] Scope Proxy 1. Scope proxy의 필요성 - Bean에 독립적인 상태를 저장해두고 싶을 때 사용할 수 있다. DI는 유일한 오브젝트를 반환하기 때문에 bean에 독립적인 상태를 저장해두기에는 부적합하다. - 직접 scope bean을 DI 받는 대신에 scope bean에 대한 proxy를 DI 받는 방식이다. proxy에서는 bean에 설정된 scope에 맞게 bean 오브젝트를 알아서 넘겨준다. - 예를 들어, singleton scope bean에서 session scope bean을 DI 받아야 하는 경우를 생각해보자. singleton scope bean에서는 session scope bean을 DI 받더라도 하나의 오브젝트밖에 할당되지 않기 때문에 사용자마자 다른 정보를 가지고 있을 수 없다. 이 .. 2022. 6. 23.
[Spring] Prototype Bean 스프링이 관리하는 bean은 기본적으로 singleton으로 관리된다. 그리고 singleton은 bean의 scope들 중 하나이기 때문에 설정을 통해 scope를 변경할 수도 있다. ※ scope : Spring이 관리하는 bean의 관리 범위를 의미하며, 하나의 scope 안에서는 매번 같은 오브젝트를 가져온다. Bean의 scope로는 singleton, prototype, request, session, globalSession, application이 있는데, 이번 포스팅에서는 scope가 prototype인 bean의 특징과 여러가지 사용 방법에 대해 알아보자. 먼저, bean의 scope는 다음과 같이 설정할 수 있다. xml 방식 ... Annotation 방식 @Component @Sc.. 2022. 6. 23.
[Spring] RestTemplate 한글 깨짐 해결방법 RestTemplate에서 UriComponentsBuilder를 이용할 때 한글이 깨져서 전송되는 경우가 있다. 그 이유는 RestTemplate에서는 String 타입에 대해서 내부적으로 StringHttpMessageConverter를 사용하여 데이터를 변환하는데, StringHttpMessageConverter의 기본 문자셋이 ISO-8859-1이기 때문에 UTF-8로 변환을 해주어야 한다. "UTF-8"을 직접 명시해줄 수도 있지만, encode() 메소드를 활용하여 UTF-8로 변환해줄 수도 있다. encode()는 인자가 없을 경우에는 기본 문자셋을 "UTF-8"로 지정한다. RestTemplate restTemplate = new RestTemplate(); HttpHeaders heade.. 2022. 6. 22.
[Spring] SpEL 1. SpEL이란? - SpEL은 Spring Expression Language의 약자로, EL보다 유연하고 일반 프로그래밍 언어 수준에 가까운 강력한 표현식을 이용하는 표현 언어다. - SpEL은 Spring 3.0에서 처음 소개되었다. 2. 기본 사용법 - JSP 뷰에서 SpEL을 사용하려면 JSP에 다음과 같이 태그 라이브러리를 추가해야 한다. - 를 통해 모델 이름이 포함된 표현식을 작성할 수 있다. 예를 들어, user 오브젝트의 name 필드 값을 출력하려면 다음과 같이 작성하면 된다. - 다음과 같이 오브젝트 메소드의 호출도 가능하다. ※ 스태틱 메소드도 호출이 가능하다. 이 때는 스태틱 메소드 앞에 new 키워드를 붙여야 한다. - 은 다양한 변환 기능과 포맷이 적용된 모델 정보를 화면에.. 2022. 6. 21.
[Spring] Collection 타입을 XML로 작성하기 1. List - 아래 예시와 같이 와 를 이용한다. David Lamb Jooyeok 2. Set - 아래 예시와 같이 과 를 이용한다. David Lamb Jooyeok 3. Map - 아래 예시와 같이 과 를 이용한다. 4. Properties - 아래 예시와 같이 와 를 이용한다. 80 100 90 5. util 스키마 - Collection을 property 값으로 선언하는 대신 독립적인 bean으로 만들 수 있으며, 이 때 util 스키마의 전용 태그를 사용한다. 1) List - 아래 예시와 같이 와 를 이용한다. David Lamb Jooyeok - 아래 예시와 같이 list-class 속성을 이용하여 List 구현 클래스를 지정할 수도 있다. ... 2) Set - 아래 예시와 같이 과 .. 2022. 6. 21.
[Spring] @Qualifier 이란? 1. Spring이 제공하는 @Qualifier의 기능 - 타입 외의 부가 정보를 추가해서 자동 와이어링을 세밀하게 제어할 수 있는 방법이다. - 타입을 기준으로 자동 와이어링하는 환경에서, 동일한 타입이 2개 이상 존재하는 bean들 중 하나의 bean을 선택할 때 유용하다. - 지정한 qualifier를 가진 bean이 없다면, 이름이 해당 qualifier값인 bean을 검색한다. 2. Bean에 qualifier 설정 1) XML 설정 방식 - 안에 qualifier값을 지정하면 된다. 2022. 6. 17.
[Spring] @Autowired의 4가지 사용 방법 @Autowired 어노테이션은 타입에 의한 자동와이어링 방식으로 bean을 가져오는 역할을 한다. 같은 타입의 Bean이 두 개 이상 존재하는 경우에는 변수의 이름과 같은 이름의 Bean을 가져온다. 변수 이름으로 Bean을 찾을 수 없는 경우에는 예외가 발생한다. 그리고 @Autowired는 필드, 수정자, 생성자, 일반 메소드에 사용할 수 있다. 간단한 예시를 통해 그 사용법을 알아보자. 1. 필드 주입 - 필드의 타입에 맞는 bean을 자동으로 찾아서 주입 시켜주는 방식이다. @Autowired private Printer printer; 2. 수정자 주입 - 수정자 메소드의 이름으로부터 프로퍼티 타입을 알아내고 프로퍼티 타입에 맞는 bean을 자동으로 찾아서 필드에 주입 시켜주는 방식이다. - .. 2022. 6. 17.
[Spring] IoC 컨테이너를 통해 애플리케이션이 만들어지는 방식 1. 메타정보 리소스 - 설정 메타정보의 내용을 표현한 리소스를 말한다. - 일반적으로 xml 파일이나 annotation같은 외부 리소스를 말한다. - 성격, 관리 주체, 계층, 팀 등에 따라 여러 리소스 파일을 분리하여 하나의 컨텍스트에 등록할 수도 있다. 2. 메타정보 리더 - 메타정보 리소스를 읽는 오브젝트를 말한다. - 일반적으로 BeanDefinitionReader 인터페이스 타입의 오브젝트를 사용한다. 3. 설정 메타정보 - Bean을 어떻게 만들고 어떻게 동작하게 할 것인가에 대한 정보다. - 일반적으로 메타정보는 BeanDefinition 인터페이스 타입의 오브젝트에 담는다. Bean 설정 정보 : BeanDefinition의 핵심 항목 더보기 ※ 이미지는 https://title-dev.. 2022. 6. 7.