webservlet servlet annotation java java-ee servlets annotations

webservlet - servlet annotations in java



Casos de uso para @WebInitParam (3)

Desde la especificación Servlet 3.0, existe la posibilidad de declarar metadatos de mapeo de servlet como anotación en la clase de servlet:

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

Sin embargo, lo que no entiendo es el caso de uso para mantener los parámetros de inicio en la misma clase que el servlet. Según tengo entendido, estos parámetros deben mantenerse separados de la clase y colocados en el descriptor de implementación.

¿Qué casos de uso existen para especificar parámetros de inicio dentro de la anotación @WebServlet ?


Creo que el caso de uso es como otros casos de uso para otras anotaciones en varios marcos donde utilizamos XML separados antes de las anotaciones.

Puedes decir lo mismo de las anotaciones de JAXB. Realmente, puedes implementar una clase y usar múltiples estrategias de su asignación a XML. Pero una vez que te mueves a las anotaciones, creas una especie de acoplamiento estrecho entre la clase y los metadatos. Lo mismo es relevante para las anotaciones de primavera. Etc.

En la práctica, rara vez implementamos el mismo servlet dos veces con una configuración diferente o utilizamos el mismo EJB dos veces o asignamos la clase a diferentes esquemas XML. Pero en este caso es muy conveniente almacenar metadatos junto con el código. Este problema se resuelve en java con anotaciones.

En pocas palabras: use esta definición en una aplicación concreta en la que cada servlet tenga cierta función y función y, por definición, no sea reutilizable y esté estrechamente relacionado con su configuración y asignación de URL. No use esto si tiene un entorno de creación como Struts o Spring Controller. En este caso, el programador de aplicaciones debe poder configurar el servlet.


Las anotaciones se utilizan para dar los valores por defecto.

En JavaEE, las propiedades de implementación también se pueden proporcionar mediante anotaciones. Dados los valores para las anotaciones, el descriptor de implementación, por ejemplo, web.xml, todavía se puede utilizar para anular los valores predeterminados proporcionados por las anotaciones.

En el ejemplo anterior, el init-param puede anularse configurando un servlet con un nombre coincidente en web.xml :

<servlet> <servlet-name>appInfoServlet</servlet-name> <init-param> <param-name>ocwd.deployer.email</param-name> <param-value>[email protected]</param-value> </init-param> </servlet>


Puedo pensar en uno, desde la parte superior de mi cabeza: proporcionar el valor predeterminado (es decir, por el diseñador de la clase).

Si el usuario de esta clase está bien con el valor predeterminado, no necesita agregar nada y simplemente lo usa. Si no lo está, puede modificarlo usando el DD.