如果我定义一个注释来设置类字段,如下所示:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@interface Set { int value();}经过必要的反思:class Injector { public static void inject(Object instance) { Field[] fields = instance.getClass().getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Set.class)) { Set set = field.getAnnotation(Set.class); field.setAccessible(true); // should work on private fields try { field.set(instance, set.value()); } catch (Exception e) { e.printStackTrace(); } } } }}我会像这样使用它:class Demo { @Set(1) public int var; public int var2;}我将如何在启动时在 spring(不是 spring-boot)中注入它?我在这里找到了这个例子,但我不想自己调用注入方法。
1 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
您可以为BeanPostProcessorspring 上下文提供一个。
public class Injector implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
inject(bean);
return bean;
}
}
添加回答
举报
0/150
提交
取消