import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationEvent;
public class OtherFactory implements BeanPostProcessor {
public static IOther getOther() {
return new Other();
}
private String string;
public IOther getIOther() {
IOther other = new Other();
other.setString(string);
return other;
}
public String getString() {
return string;
}
@Override
public Object postProcessAfterInitialization(Object object, String string)
throws BeansException {
Field[] fields = object.getClass().getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
for (Field field : fields) {
if (String.class.equals(field.getType())) {
try {
field.set(object, field.get(object));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return object;
}
@Override
public Object postProcessBeforeInitialization(Object object, String string)
throws BeansException {
return postProcessAfterInitialization(object, string);
}
public void setString(String string) {
this.string = string;
System.out.println(string);
}
}