[SPRING] 타입 검증을 가진 Spring getBean
SPRING타입 검증을 가진 Spring getBean
ApplicationContext.getBean (String name, Class requiredType) 메서드를 사용하고 있습니다. bean의 유형은 util : set입니다. 내 코드는 다음과 같습니다.
Set<String> mySet = context.getBean("myBean", Set.class);
나는 타입 캐스팅 경고를 피하기 위해 이렇게하는 방법을 알고 싶다 :
Set<String> mySet = context.getBean("myBean", Set<String>.class);
이런 식으로 클래스의 유형을 정의 할 수 있는지 확실하지 않습니다. 나는 꿈꿔 왔을 까 아니면 이것을 할 수있는 방법이 있나?
감사.
해결법
-
==============================
1.실제로는 아니지만 최소한 @SuppressWarnings의 필요성을 제거하는 런타임 해결 방법이 있습니다. 클래스를 추상화하고 Spring에서 코드를 사용하도록 할 수 있습니다.
실제로는 아니지만 최소한 @SuppressWarnings의 필요성을 제거하는 런타임 해결 방법이 있습니다. 클래스를 추상화하고 Spring에서 코드를 사용하도록 할 수 있습니다.
public abstract class Test { Set<String> getMyBean(); }
그런 다음 XML 설정에 조회 방법을 삽입하십시오.
<bean class="Test"> <lookup-method name="myBean" bean="myBean" /> </bean>
실제로 정적으로 검사되는 것은 아니지만 런타임에는 오류가 빠르며 코드에서 못생긴 캐스팅을 유지합니다.
-
==============================
2.아마 이것은 당신에게 유용 할 수 있습니다 :
아마 이것은 당신에게 유용 할 수 있습니다 :
Set<String> setBean= null; Map<String, Set> beans = applicationContext.getBeansOfType(Set.class); for (Map.Entry<String, Set> bean: beans.entrySet()) { ParameterizedType thisType = (ParameterizedType) bean.getClass().getGenericSuperclass(); Class<?> parametrizedClass= thisType.getActualTypeArguments()[0]; if (parametrizedClass.isAssignableFrom(String)) { setBean= (Set<String>) bean; } }
http://javahelp.redsaltillo.net
from https://stackoverflow.com/questions/5266127/spring-getbean-with-type-validation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring JUnit 테스트에서 자동 모의 인스턴스 생성 (0) | 2019.04.05 |
---|---|
[SPRING] Spring에 다중 트랜잭션 관리자가있는 다중 데이터 소스 (0) | 2019.04.04 |
[SPRING] 특정 클래스 로더와 함께 Spring 컨텍스트로드하기 (0) | 2019.04.04 |
[SPRING] 종속 라이브러리 Jar에있는 Bean을 @Autowire 할 수 없습니까? (0) | 2019.04.04 |
[SPRING] Spring과 Hibernate는 갑자기 트랜잭션을 읽기 전용으로 설정했다. (0) | 2019.04.04 |