@WebInitParam的用例

从Servlet 3.0规范开始,可以将servlet映射元数据声明为servlet类的注释:

@WebServlet(name="appInfoServlet", urlPatterns ="/appInfo", initParams = @WebInitParam(name="ocwd.deployer.email", value="admin@example.com")) public class AppInfoServlet extends HttpServlet { } 

我不明白的是将init参数保存在与servlet相同的类中的用例。 据我所知,这些参数将与类分开并放入部署描述符中。

@WebServlet注释中指定init参数有哪些用例?

注释用于提供默认值。

在JavaEE中,还可以使用注释来提供部署属性。 给定注释的值,部署描述符即web.xml仍可用于覆盖注释提供的默认值。


在上面的示例中,可以通过在web.xml配置具有匹配名称的servlet来覆盖init-param

   appInfoServlet  ocwd.deployer.email noreply@example.com   

从头脑中我可以想到一个: 提供默认值 (即由类设计师)。

如果这个类的用户没有使用默认值,他就不需要添加任何东西而只是使用它。 如果他不是 – 他可以使用DD修改它。

我认为用例就像其他用例中的其他用例一样,我们在注释之前使用了单独的XML。

你可以对JAXB注释说同样的话。 实际上,您可以实现一个类并使用其映射到XML的多种策略。 但是一旦你转移到注释,你就会在类和元数据之间创建一种紧密耦合。 这与Spring注释相关。 等等。

实际上,我们很少使用不同的配置两次部署相同的servlet,或者使用相同的EJB两次或将类映射到不同的XML模式。 但在这种情况下,将元数据与代码一起存储非常方便。 在带注释的java中解决了这个问题。

底线:在具体应用程序中使用此定义,其中每个servlet具有某些function和角色,并且根据定义,它不可重用并与其URL映射和配置紧密耦合。 如果你是一个像Struts或Spring控制器这样的创建环境,请不要使用它。 在这种情况下,应用程序员应该能够配置servlet。