본문 바로가기

분류 전체보기

(214)
4.5.1. Autowiring의 한계와 단점 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-autowired-exceptions Autowiring은 프로젝트 전반에 걸쳐 일관성 있게 사용될 때 가장 좋다. 만약 일반적으로 autowiring이 사용되지 않는 경우라면, 개발자는 한 두개의 bean을 wire하기 위해 autowiring을 사용하는 것을 주저할 것이다. autowiring에 대한 다음 한계와 단점을 고려해보자. 'property'와 'constructor-arg' 세팅의 명확한 의존성들은 언제나 autowiring을 오버라이드한다. 또한 'simple properties'들은 autowire할 수 없다...
4.5. 협력자들 Autowiring하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-autowire 스프링 컨테이너는 협력하는 bean들의 관계를 autowire할 수 있다. 스프링이 ApplicationContext의 내용물들을 훑어보면서, 자동적으로 협력자들 사이의 관계를 맺어주도록 할 수 있다. Autowiring은 다음의 장점들이 있다. Autowiring은 프로퍼티와 생성자 매개변수들을 설정해줘야할 필요성을 크게 줄여준다(이 챕터에서 논의되는 'bean template' 같은 메커니즘들이 이와 관련하여 의미가 있다). Autowiring은 객체들이 진화함에 따라 설정을 업데이트 시켜준다...
4.4. Lazy-initialized Beans 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lazy-init 기본적으로, ApplicationContext 구현체들은 초기화 과정 중에 싱글턴 bean들을 열심히 만들어낸다. 일반적으로 이런 사전 인스턴스화는 바람직하다. 설정이나 환경적인 에러들이 즉시 발견되기 때문이다. 하지만 이런 활동이 바람직하지 않은 경우에는 bean을 lazy-initialized라고 표시하여 사전 인스턴스화를 막을 수 있다. lazy-initialized bean은 IoC 컨테이너에게 startup될 때가 아니라 요청 받았을때 자신을 만들게끔 한다. XML에서 이 행동은 요소의 ..
4.3. depends-on 사용하기 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-dependson 만약 bean이 다른 bean에게 의존성을 제공한다면, 이는 주입받는 bean의 프로퍼티가 된다는 것을 의미한다. XML 기반의 설정 메타데이터에서는 보통 요소를 통해 이루어진다. 그러나 가끔은 의존성이 덜 직접적인 경우가 있다. 데이터베이스 드라이버 등록처럼 static한 initializer가 발동되어야 하는 경우가 그 예시다. 'depends-on' 속성은 이 속성을 사용하는 bean이 초기화되기 전에, 의존성 bean들이 초기화될 수 있도록 명확하게 강제한다. 다음 예시는 하나의 bean에..
4.2.12. 복합적인 Property 이름들 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-compound-property-names bean 프로퍼티를 세팅할 때, 복합적이거나 내포된 프로퍼티 이름들을 사용할 수도 있다. 마지막 프로퍼티의 이름이 null만 아니면 모든 컴포넌트의 경로를 다 집어 넣을 수도 있다. 다음 bean 정의를 참고하라. 'something'이라는 bean은 'fred'라는 프로퍼티를 갖는다. 그리고 fred는 'bob'이라는 프로퍼티를 갖는다. 그리고 bob은 'sammy'라는 프로퍼티를 갖는다. 그리고 그 마지막 sammy 프로퍼티가 '123'이라는 값으로 세팅된다. 이것이 작동하기 위해서..
4.2.11. c-namespace를 사용한 XML Shortcut 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-c-namespace 스프링 3.1에서 소개된 c-namespace는 p-namespace와 유사하게 'constructor-arg' 요소 없이, 인라인 속성으로 생성자 매개변수를 설정할 수 있게 해준다. 다음 예시는 'c:' namespace를 사용하여 생성자 기반의 의존성 주입과 같은 일을 하는 것을 보여준다. 'c:' namespace는 '-ref'에서 bean들의 이름을 활용해 생성자 매개변수를 세팅한다는 점에서 'p:'와 같은 방식으로 사용된다. 또한 비슷하게도, XSD 스키마에는 정의가 되어 있지 않지만 XML 파일 ..
4.2.10. p-namespace를 이용한 XML Shortcut 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-p-namespace p-namespace는 요소를 쓰지 않고도 bean요소의 속성을 사용할 수 있게 해준다. 이를 통해 프로퍼티 값이나 협력하는 bean들을 서술할 수 있다. 스프링은 namespace들을 통해 XML 스키마에 기반을 둔 확장된 설정 포맷들을 제공한다. 이번 챕터에서 논의하는 bean 설정 포맷들은 XML 스키마 문서에 정의되는 것이다. 그러나 p-namespace는 XSD 파일에 정의되어 있지 않으며, 오직 스프링의 core에만 존재한다. 다음 예시는 같은 결과를 가진 두 XML 부분들을 보여준다. 첫번째는 ..
4.2.9. Null과 Empty인 문자열 값들 원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-null-element 스프링은 프로퍼티에 대한 빈 인자들을 빈 문자열처럼 취급한다. 다음 XML 기반의 설정 메타데이터는 email 프로퍼티에 빈 문자열인 ("")을 세팅한다. 위의 예시는 다음 자바 코드와 동일하다. exampleBean.setEmail(""); 요소는 null값과 대응된다. 다음은 그 예시다. 위의 예시는 다음 자바 코드와 동일하다. exampleBean.setEmail(null);