>  기사  >  Java  >  주석이 달린 Spring Bean에 외부 소스의 속성을 주입하는 방법은 무엇입니까?

주석이 달린 Spring Bean에 외부 소스의 속성을 주입하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-13 14:01:02590검색

How to Inject Properties from External Sources into Annotated Spring Beans?

주석이 달린 Spring Bean에 외부 속성 삽입

주석을 통해 Spring Bean을 구성할 때 외부 소스의 속성 값을 삽입해야 합니다. 이 기사에서는 주석을 사용하여 구성된 Bean에 속성 값을 주입하는 방법에 대한 질문을 다룹니다.

제공된 코드는 Spring XML 파일에서 명시적인 정의 없이 주석을 통해 구성된 Spring Bean인 PersonDaoImpl을 보여줍니다. 그러나 app.properties의 속성을 이 bean에 주입해야 할 필요성이 발생합니다.

전통적으로 이는 XML 파일에서 속성을 정의하고 PropertyPlaceholderConfigurer를 사용하여 외부 파일에서 값을 읽는 방식으로 이루어졌습니다. 그러나 주석을 통해 정의된 Bean에서는 이 접근 방식이 불가능합니다.

이 문제를 해결하기 위해 Spring은 Spring 3에서 EL 지원을 사용하는 솔루션을 제공합니다. 다음 코드는 아이디어를 보여줍니다.

@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {

    @Value("#{systemProperties.databaseName}")
    public void setDatabaseName(String dbName) { ... }
}

이 예에서 systemProperties는 시스템 속성에 대한 액세스를 허용하는 암시적 개체입니다. 그런 다음 dbName에는 시스템 속성 DatabaseName의 값이 주입됩니다.

마찬가지로 EL 표현식을 사용하여 다른 Bean을 주입할 수 있습니다. 예를 들면 다음과 같습니다.

@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }

여기에서 strategyBean은 Spring 빈으로 가정되며 해당 데이터베이스KeyGenerator 속성은 현재 빈에 주입됩니다.

Spring에서는 또한 속성 개체:

@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;

이 예에서는 myProperties 개체의 속성이 필드에 삽입됩니다. githubOauthClientId.

위 내용은 주석이 달린 Spring Bean에 외부 소스의 속성을 주입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.