복붙노트

[SPRING] Spring - 별칭과 이름의 사용

SPRING

Spring - 별칭과 이름의 사용

별칭 사용법에 대해 혼란스러워합니다. 별칭이 무엇인지 어떻게 사용되는지는 이해하지만 bean 정의에 이름을 사용하는 것과는 다른 방법이 무엇인지 알지 못합니다.

<bean id="xyx" name="abc,def" .. />

<alias name="xyx" alias="pqr"/>

왜 abc 또는 def를 사용할 수있을 때 별칭을 사용합니까?

해결법

  1. ==============================

    1.내 마음 속에서 빈 앨리어싱은 콩 이름을 조작 할 수없는 대형 시스템에서 유용 할 수있다. 시스템의 특정 부분에 고유 한 이름 (별칭)을 만들 수있는 옵션이 있습니다.

    내 마음 속에서 빈 앨리어싱은 콩 이름을 조작 할 수없는 대형 시스템에서 유용 할 수있다. 시스템의 특정 부분에 고유 한 이름 (별칭)을 만들 수있는 옵션이 있습니다.

    Spring 문서 (3.0.x) http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/

    따라서 여러 이름이나 별칭을 만드는 것은 같은 일입니다.

  2. ==============================

    2.유스 케이스는 아마도 모듈 애플리케이션 (각 모듈은 예를 들어 봄 프로젝트)의 어딘가에서 이미 정의 된 일부 빈을 커스터마이징하고 싶을 때, 빈은 아마 3 부 프레임 워크 / API 또는 팀으로 정의 될 수있다. 이 경우 스프링 프로젝트 내부에서만 다른 모듈 (프로젝트)을 변경하지 않고 커스터마이징 된 버전을 호출하기를 원할뿐입니다. 스프링 구성에 별칭을 추가하면됩니다.이 기능은 실제로 강력한 기능입니다.

    유스 케이스는 아마도 모듈 애플리케이션 (각 모듈은 예를 들어 봄 프로젝트)의 어딘가에서 이미 정의 된 일부 빈을 커스터마이징하고 싶을 때, 빈은 아마 3 부 프레임 워크 / API 또는 팀으로 정의 될 수있다. 이 경우 스프링 프로젝트 내부에서만 다른 모듈 (프로젝트)을 변경하지 않고 커스터마이징 된 버전을 호출하기를 원할뿐입니다. 스프링 구성에 별칭을 추가하면됩니다.이 기능은 실제로 강력한 기능입니다.

    <alias alias="globalBeanService" name="customizedBeanService" />
    

    따라서 spring이 globalBeanService에 대한 호출을 찾으면 특정 모듈 안에 사용자 정의 된 BeanService를 삽입합니다. 이 기능이 없다면 모든 클래스를 거쳐 수동으로 빈을 수정해야합니다 !!

  3. ==============================

    3.별칭에는 여러 이름에없는 특정 사용 시나리오가 있습니다.

    별칭에는 여러 이름에없는 특정 사용 시나리오가 있습니다.

    프로젝트에서 여러 config xml 파일을 상상해보십시오. 대부분이 동료가 작성하고 자신 만의 config.xml 파일을 추가해야합니다. 당신은 다른 설정 파일에 정의 된 bean을 당신의 동료의 설정 파일을 건드리지 않고 설정에 더 의미있는 다른 이름으로 참조 할 수 있습니다.

  4. ==============================

    4.앨리어싱 된 빈은 항상 앨리어스가없는 앨리어스보다 높은 우선 순위를 가지며 동일한 별칭을 가진 다른 빈을 갖는 경우 선언 된 마지막 빈이 우선 순위를가집니다. 즉, 앨리어싱 된 빈은 앨리어스가 적용되지 않은 빈을 오버라이드합니다. 이것은 큰 프로젝트를 만들 때 또는 프로젝트의 확장 기능을 빌드 할 때 원래의 bean 정의를 건드리지 않으려 할 때 특히 유용 할 수 있습니다.

    앨리어싱 된 빈은 항상 앨리어스가없는 앨리어스보다 높은 우선 순위를 가지며 동일한 별칭을 가진 다른 빈을 갖는 경우 선언 된 마지막 빈이 우선 순위를가집니다. 즉, 앨리어싱 된 빈은 앨리어스가 적용되지 않은 빈을 오버라이드합니다. 이것은 큰 프로젝트를 만들 때 또는 프로젝트의 확장 기능을 빌드 할 때 원래의 bean 정의를 건드리지 않으려 할 때 특히 유용 할 수 있습니다.

  5. ==============================

    5.별칭으로 문제를 쉽게 해결할 수있는 또 다른 사용 사례를 발견했습니다.

    별칭으로 문제를 쉽게 해결할 수있는 또 다른 사용 사례를 발견했습니다.

    자동 설정이 활성화되면 Spring Boot는 현재 웹 애플리케이션을 실행중인 서버에 대한 정보에 접근하는 데 사용할 수있는 bean serverProperties를 제공합니다.

    통합 테스트에서 (즉, @SpringBootTest 주석이있는 경우) 동일한 bean을 org.springframework.boot.autoconfigure.web.ServerProperties라는 이름으로 사용할 수 있습니다.

    물론 통합 테스트를 위해 다른 프로필을 사용할 수도 있지만 여러 위치에서 수동으로 구성을 변경해야합니다. 그러나 단순히

    <alias name="serverProperties" alias="org.springframework.boot.autoconfigure.web.ServerProperties"/>
    

    동일한 구성 파일을 통합 테스트 및 프로덕션에 사용할 수 있습니다.

    별칭은 새로운 릴리스를 기다리지 않고 쉽게 문제를 해결하지만 Spring Boot의 버그 일 수 있습니다. 그리고 가장 확실하게 부트 구성을 직접 변경할 가능성이 없습니다.

  6. from https://stackoverflow.com/questions/15211590/spring-usage-of-alias-vs-names by cc-by-sa and MIT license