application.properties를 사용하여 맵 을 전달하는 방법
설정할 필요가 있는 Web 서비스에 몇 가지 인가를 실장하고 있습니다.
현재 사용자/비밀번호 콤보는 bean 구성에 하드코드되어 있습니다.application.properties에 사용자 및 패스워드를 사용하여 맵을 설정하여 외부 설정을 할 수 있도록 합니다.
어떻게 할 수 있는지 단서가 있나요?
<bean id="BasicAuthorizationInterceptor" class="com.test.BasicAuthAuthorizationInterceptor">
<property name="users">
<map>
<entry key="test1" value="test1"/>
<entry key="test2" value="test2"/>
</map>
</property>
</bean>
사용할 수 있습니다.@Value
.
속성 파일:
users={test1:'test1',test2:'test2'}
자바 코드:
@Value("#{${users}}")
private Map<String,String> users;
사용할 수 있습니다.@ConfigurationProperties
가치관이 있다application.properties
콩에 묶여서이렇게 하려면 다음 항목에 주석을 달아야 합니다.@Bean
bean 작성 방법:
@Bean
@ConfigurationProperties
public BasicAuthAuthorizationInterceptor interceptor() {
return new BasicAuthAuthorizationInterceptor();
}
콩의 초기화의 일부로서, 모든 속성은BasicAuthAuthorizationInterceptor
는, 애플리케이션의 환경에 근거해 설정됩니다.예를 들어, 이것이 bean의 클래스인 경우:
public class BasicAuthAuthorizationInterceptor {
private Map<String, String> users = new HashMap<String, String>();
public Map<String, String> getUsers() {
return this.users;
}
}
다음으로 application.properties를 나타냅니다.
users.alice=alpha
users.bob=bravo
그 다음에users
맵에는 다음 2개의 엔트리가 입력됩니다.alice:alpha
그리고.bob:bravo
.
이 모든 것을 정리한 샘플 앱은 다음과 같습니다.
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Application {
public static void main(String[] args) throws Exception {
System.out.println(SpringApplication.run(Application.class, args)
.getBean(BasicAuthAuthorizationInterceptor.class).getUsers());
}
@Bean
@ConfigurationProperties
public BasicAuthAuthorizationInterceptor interceptor() {
return new BasicAuthAuthorizationInterceptor();
}
public static class BasicAuthAuthorizationInterceptor {
private Map<String, String> users = new HashMap<String, String>();
public Map<String, String> getUsers() {
return this.users;
}
}
}
다양한 구성 옵션에 대한 자세한 내용은 javadoc for를 참조하십시오.예를 들어 프리픽스를 설정하여 설정을 여러 네임스페이스로 분할할 수 있습니다.
@ConfigurationProperties(prefix="foo")
바인딩이 작동하려면 application.properties에서 선언된 속성에 동일한 접두사를 사용해야 합니다.
foo.users.alice=alpha
foo.users.bob=bravo
오브젝트는 이미Map
, 실제로HashTable
다시 구현되는 것은Map
.
따라서 속성 파일을 생성할 때(이름 지정 가능)users.properties
)를 사용하여 로드할 수 있습니다.PropertiesFactoryBean
또는<util:properties />
그리고 그걸 네 반에 주입해.
test1=test1
test2=test2
그럼 이렇게 해.
<util:properties location="classpath:users.properties" id="users" />
<bean id="BasicAuthorizationInterceptor" class="com.test.BasicAuthAuthorizationInterceptor">
<property name="users" ref="users" />
</bean>
하지만 만약 당신이Map<String, String>
사용자 속성 유형으로 실패할 수 있습니다.저라면 안 넣어요application.properties
파일이에요. 하지만 그건 저일 수도 있어요
비슷한 걸 찾는 것 같은데
마찬가지로 .properties에서 값을 선택하여 맵에 할당할 수 있습니다.
언급URL : https://stackoverflow.com/questions/26275736/how-to-pass-a-mapstring-string-with-application-properties
'source' 카테고리의 다른 글
Oracle에서 모든 권한을 가진 사용자 생성 (0) | 2023.03.07 |
---|---|
모든 경과 도달 가능 상태를 포함한 리액트컴포넌트를 리셋하려면 어떻게 해야 하나요? (0) | 2023.03.07 |
JSON 배열을 Python 목록으로 변환 (0) | 2023.03.02 |
IE11 HTTPS AJAX XMLHttpRequest:네트워크 오류 0x2eff, 오류 00002eff로 인해 작업을 완료할 수 없습니다. (0) | 2023.03.02 |
Angular JS는 데스크톱 또는 모바일 기반의 다양한 뷰 (0) | 2023.03.02 |