[SPRING] 자바에서 반사에 의해 setter 메서드를 호출하는 방법
SPRING자바에서 반사에 의해 setter 메서드를 호출하는 방법
Java에서 리플렉션으로 Bean 개인 설정 메소드를 호출하는 방법
My User Bean에서 개인 설정 메소드를 호출하는 방법을 이해할 수 없습니다. 나는 모두 준비 PropertyDescriptor 및 여러 가지 방법으로하지만 난 개인 액세스하지 오전 Reflection에 의한 setter 메소드.
public class GetterAndSetter
{
public static void main(String[] args)
{
GetterAndSetter gs = new GetterAndSetter();
User user = new User();
try {
gs.callSetter(user,"name","Sanket");
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void callSetter(Object obj,String fieldName, Object value) throws IntrospectionException, InvocationTargetException, IllegalAccessException , IllegalArgumentException
{
PropertyDescriptor pd;
pd = new PropertyDescriptor(fieldName,obj.getClass());
pd.getWriteMethod().invoke(obj,value);
}
}
이 코드에서는 파일에만 액세스하고 필드에 값을 설정하지만, setter 필드에 직접 리플렉션에 액세스
해결법
-
==============================
1.User 클래스에서 private 메서드를 호출하는 방법은 다음과 같습니다.
User 클래스에서 private 메서드를 호출하는 방법은 다음과 같습니다.
try { User user = new User(); Method method = User.class.getDeclaredMethod("setName", String.class); method.setAccessible(true); method.invoke(user, "Some name"); System.out.println("user.getName() = " + user.getName()); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); }
method.setAccessible (true)에 대한 호출에 유의하십시오.
from https://stackoverflow.com/questions/54049322/how-to-invoke-setter-method-by-reflection-in-java by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate 4.0.1에서 Spring 3.1을 사용할 때 java.lang.ClassNotFoundException : org.hibernate.util.DTDEntityResolver를 어떻게 해결할 수 있습니까? (0) | 2019.04.03 |
---|---|
[SPRING] 실시간 통지 전자 메일을 구현하기위한 Quartz와의 Full Spring 통합 (0) | 2019.04.03 |
[SPRING] @Cacheable 주석을 사용하여 스프링 빈을 키로 사용하기 (0) | 2019.04.02 |
[SPRING] 스프링 부트 액추에이터 엔드 포인트의 JSON 출력을 멋지게 출력 (0) | 2019.04.02 |
[SPRING] 봄의 PropertyPlaceHolder (0) | 2019.04.02 |