jersey - attribute - DropWizard Bootstrap vs Configuración vs Ambiente
title html css (1)
Dropwizard es básicamente un marco web de opinión, utilizado principalmente para servir como un proyecto de API REST. Las clases sobre las que estás preguntando son el quid de lo que hace que una aplicación Dropwizard. Los desarrolladores han combinado todas las bibliotecas que desean usar en su marco y las han conectado para que podamos trabajar fácilmente con lo que han arrancado para nosotros.
Environment es el contenedor de Dropwizard Environment, no el entorno personal de su aplicación (es decir, local vs. producción). Tiene propiedades que son fundamentales para el marco de Dropwizard, como el contenedor web de jersey.
Bootstrap es básicamente la clase que conecta todo lo que se usa en el entorno, incluida su configuración y aplicación.
Si observa los archivos de origen, obtendrá una buena idea de cómo funcionan estas clases.
Actualización: según su pregunta a continuación, el entorno no debe utilizarse para determinar los tipos de conexión de la base de datos y las credenciales; para eso está su archivo .yml de configuración. Querrá colocar cualquier variable específica del entorno en ese archivo y luego ejecutar su aplicación con un archivo .yml específico. Personalmente, tengo un application-local.yml, application-staging.yml y application-prod.yml y ejecuto mi aplicación con el .yml adecuado en función del entorno.
Dropwizard realiza algunas configuraciones automáticas de fuentes de datos con propiedades específicas de .yml: vea here .
Una aplicación típica de DropWizard especifica una subclase de aplicación, y reemplaza su método de initialize
manera:
class MyApplication extends Application<MyConfiguration> {
static void main(String[] args) {
new MyApplication().run(args)
}
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// ???
}
@Override
public void run(MyConfiguration configuration, Environment environment)
throws Exception {
// Register resources, health checks, etc.
}
}
Después de leer los documentos de DropWizard, así como los JavaDocs para:
-
Configuration
: una representación de objeto del archivo de configuración YAML. Amplíe esto con sus propias propiedades de configuración, y también se analizarán desde el archivo YAML. -
Bootstrap
: el entorno de la aplicación de inicio previo, que contiene todo lo necesario para arrancar un comando Dropwizard. -
Environment
- El entorno de una aplicación Dropwizard.
Pero estas son definiciones de clase bastante vagas, particularmente las dos últimas. Entiendo que debo subclasificar la Configuration
y que representa un POJO en memoria del archivo de configuración YAML / JSON de mi aplicación.
Pero no puedo entender lo que representan las otras construcciones ( Bootstrap
y Environment
). Estoy acostumbrado a inyectar configuraciones específicas del entorno en mis aplicaciones, por lo que tiendo a pensar en los conceptos de "entorno" y "configuración" como uno en el mismo.
Además, parece que DropWizard une estrechamente las instancias de Bootstrap
con las instancias de Configuration
implícita, pero no puedo encontrar ejemplos demostrables de cómo estas dos clases son diferentes y cómo deberían usarse de manera diferente unas de otras.
Entonces pregunto:
- ¿Qué es un
Bootstrap
, para qué lo uso? - ¿Qué es un
Environment
y para qué lo uso?