我对java Servlets和JSP有一点经验,但我使用的是Spring。在Spring中,我们有一个名为BeanPostProcessor的接口。我使用此接口实现来创建自定义注释。代码示例
public class InjectRandomIntAnnotationBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String string) throws BeansException {
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field : fields) {
InjectRandomInt annotation = field.getAnnotation(InjectRandomInt.class);
if (annotation != null) {
int min = annotation.min();
int max = annotation.max();
Random r = new Random();
int i = min + r.nextInt(max - min);
field.setAccessible(true);
ReflectionUtils.setField(field, bean, i);
}
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object o, String string) throws BeansException {
return o;
}
}
当我开始使用servlet时,我提到了这个注释@WebServlet(urlPatterns = "/user/login")
问题是:在Servlet中是否有任何功能与Spring中的BeanPostProcessor类似,注释@WebServlet的注释在哪里?
实施例: 我的意思是Spring中的注释是用BeanPostProcessor注入的,用于检查注释@AutoWired是由AutoWiredAnnotationBeanPostProcessor类声明的,但注释@WebServlet被注入(或声明)
答案 0 :(得分:0)
Servlet不受Spring容器管理。因此,它们的注释由它们运行的servlet api实现处理,即Tomcat。
根据您要实现的目标,您只需扩展HttpServlet
并使用您的逻辑覆盖init method
。
如果您需要进行一些布线,您还可以利用SpringBeanAutowiringSupport
。另见