1. Descripción de requisitos:
Llame a la conexión de la base de datos en el método estático y los parámetros deben obtenerse del archivo de configuración yml
2. Análisis de puntos dudosos
Según la referencia de anotación convencional @Value, se encontró que la variable siempre estaba vacía y no se podían obtener los datos, luego se encontró que había un problema con la referencia de la variable.
Tres.Resolver
1. @PostConstruct Esta anotación se utiliza para modificar un método void() no estático. El método modificado por @PostConstruct se ejecutará cuando el servidor cargue el Servlet y el servidor solo lo ejecutará una vez. PostConstruct se ejecuta después del constructor y antes del método init().
2. Por lo general, usaremos @PostConstruct para anotar el orden de ejecución del método en toda la inicialización de Bean en el marco Spring: Constructor (método de construcción) -> @Autowired (inyección de dependencia) -> @PostConstruct (método anotado)
@Component
public class ProcUtils {
@Value("${spring.datasource.url}")
private String url;
private static String dbUrl;
@Value("${spring.datasource.username}")
private String username;
private static String dbName;
@Value("${spring.datasource.password}")
private String password;
private static String dbPassword;
@Value("${spring.datasource.driver}")
private String driver;
private static String dbDriver;
private static Connection connection = null;
public static Connection getConnection(){
try {
Class.forName(dbDriver);
connection = DriverManager.getConnection (dbUrl,dbName,dbPassword);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
@PostConstruct
public void setProfile() {
dbUrl = this.url;
dbName = this.username;
dbPassword = this.password;
dbDriver = this.driver;
}
}