|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,
在使用中一样平常一般的JavaPojo都是由Spring来办理的,以是利用autowire注解来举行注进不会发生成绩,可是有两个工具是破例的,一个是Filter,一个是Servlet,这两样工具都是由Servlet容器来保护办理的,以是假如想和其他的Bean一样利用Autowire来注进的话,是必要做一些分外的工夫的。
关于Filter,Spring供应了DelegatingFilterProxy,以是本文次要报告Servlet的办理。
1、对照直不雅可是不年夜文雅的做法是重写init()办法,在内里利用AutowireCapableBeanFactory来手工告知Spring:我这个Servlet是必要如许的一个Bean的。详细写法:
public void init(ServletConfig servletConfig) throws ServletException {
ServletContext servletContext = servletConfig.getServletContext();
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext.getAutowireCapableBeanFactory();
autowireCapableBeanFactory.configureBean(this, BEAN_NAME);
}
个中,BEAN_NAME就是必要注进的Bean在spring中注册的名字.
如许写的次要成绩是就是谁人BEAN_NAME,如许写有点自动查找,而不是依附注进的感到。
2、创立一个相似于DelegatingFilterProxy那样的代办署理,经由过程代办署理依据设置来找到实践的Servlet,完成营业逻辑功效。
假定我们有一个Servlet名字叫UserServlet,必要注进一个UserManager,伪代码以下:
public class UserServlet extends HttpServlet {
@Autowired(required = true)
private UserManager userManager;
}
第一步:
public class DelegatingServletProxy extends GenericServlet {
private String targetBean;
private Servlet proxy;
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
proxy.service(req, res);
}
@Override
public void init() throws ServletException {
this.targetBean = getServletName();
getServletBean();
proxy.init(getServletConfig());
}
private void getServletBean() {
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
this.proxy = (Servlet) wac.getBean(targetBean);
}
}
第二步:
设置web.xml文件,本来UserServlet的设置大抵是如许的:
<servlet>
<servlet-name>userServlet</servlet-name>
<servlet-class>com.sample.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
如今修正为
<servlet>
<servlet-name>userServlet</servlet-name>
<servlet-class>com.sample.DelegatingServletProxy</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
注重,spring是依据Servlet的名字来查找被代办署理的Servlet的,以是,起首我们要在UserServlet类后面加上@Component,来告知Srping:我也是一个Bean。假如称号和Web.xml内里界说的纷歧样的话,能够在这里指定Bean的名字,好比:@Component("userServlet")
ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。 |
|