由于servlet容器和spring容器并不是同一个,所以当需要向servlet中注入spring bean是有以下操作:
1、使用proxy servlet(代理servlet),将实际servlet加入spring bean管理,在代理servlet的init方法中找到被代理servlet bean,后续请求处理由被代理servlet处理
2、使用Spring的Autowired注解(在servlet的bean属性中加入此注解,由spring容器自动注入)
代理servlet实现向servlet注入spring bean真的好麻烦,所以我们选择注解实现自动注入,但是不禁又想了想,既然spring可以通过扫描属性注解来自动注入spring bean,那么我们自己定义注解扫描是不是也可以呢?
首先,定义自定义注解
/**
* Servlet注入的bean属性注解, 注入操作由AbstractBaseServlet完成
* @author jiashun
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface AnnotationServletBean {
}
定义AbstractBaseServlet
/**
* 所有Servlet的基类, 用来实现向servlet注入bean
*/
public abstract class AbstractBaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**