Si quieres saber ¿qué es la anotación de Java? Puedes echar un vistazo primero: "http://www.infoq.com/articles/Annotation-Hammer"
Aquí hay una demostración que hice:
Estructura del proyecto:
Efecto de operación:
==================================================== ==
Parte del código:
Nota: Mucha gente considerará esta pregunta: "¿Cuál es el propósito de hacer esto? Podemos crear un archivo de configuración (xml, propiedades, etc.), que no es más conveniente que esto... o
Escriba nuestra información de configuración directamente en el programa... De esta manera los comentarios que escribimos no serán analizados..."
Pero, ¿cuáles son las ventajas y desventajas de los archivos de configuración y anotaciones como xml y propiedades?
Opinión personal: al escribir comentarios, es más conveniente... puede mejorar la eficiencia del desarrollo. Los marcos de anotación son útiles, como: Hibernate, Struts, Spring, etc.
Volviendo al tema original, "¿Cuál es el propósito de hacer esto?"---Esta es solo una demostración para que todos sepan de qué se trata la anotación.... En muchos de los proyectos que desarrollamos
En el proceso, nuestras propias anotaciones definidas rara vez se utilizan. Si realmente se utilizan, este blog puede ser útil. ^_^.
==================================================== ==
/java_annotation/src/com/b510/hongten/annotation/JDBCAnnotation.java
importar java.lang.annotation.Documented;
importar java.lang.annotation.ElementType;
importar java.lang.annotation.Retention;
importar java.lang.annotation.RetentionPolicy;
importar java.lang.annotation.Target;
/**
* Anotación JDBC
*
* @autor Hongten
* @fecha 2013-4-10
*/
@Documentado
@Retención(RetentionPolicy.RUNTIME)
@Destino(TipoElemento.TIPO)
@interface pública Anotación JDBCA {
Controlador de cadena() predeterminado "com.mysql.jdbc.Driver";
Cadena dbName() predeterminado "";
Codificación de cadena() por defecto "UTF-8";
Puerto de cadena() predeterminado "3306";
String host() predeterminado "localhost";
String nombre de usuario() predeterminado "raíz";
Contraseña de cadena () predeterminada "";
}
importar com.b510.hongten.annotation.JDBCAnnotation;
/**
* @autor Hongten
* @fecha 2013-4-12
*/
@JDBCAnnotation(dbName = "db_lucene", puerto = "3306", host = "192.168.0.119", nombre de usuario = "raíz", contraseña = "raíz")
clase pública JDBCUtil {
controlador de cadena estático privado;
cadena estática privada dbName;
codificación de cadenas estáticas privadas;
puerto de cadena estático privado;
host de cadena estática privada;
contraseña de cadena estática privada;
Nombre de usuario de cadena estática privada;
URL de cadena estática privada;
checkInterceptor público vacío (Clase<?> cl) lanza una excepción {
bandera booleana = cl.isAnnotationPresent(JDBCAnnotation.class);
si (bandera) {
JDBCAnnotation jdbcAnnotation = cl.getAnnotation(JDBCAnnotation.class);
controlador = jdbcAnnotation.driver();
NombreBD = jdbcAnnotation.NombreBd();
codificación = jdbcAnnotation.codificación();
puerto = jdbcAnnotation.port();
anfitrión = jdbcAnnotation.host();
Nombre de usuario = jdbcAnnotation.Nombre de usuario();
contraseña = jdbcAnnotation.contraseña();
url = "jdbc:mysql://" + host + ":" + puerto + "/" + dbName + "?characterEncoding=" + codificación;
System.out.println("JDBCUtil cargando comentarios completados...");
}
}
público JDBCUtil() {
intentar {
checkInterceptor(JDBCUtil.clase);
} captura (Excepción e) {
e.printStackTrace();
}
}
cadena estática pública getDriver() {
conductor de regreso;
}
setDriver vacío estático público (controlador de cadena) {
JDBCUtil.driver = controlador;
}
Cadena estática pública getDbName() {
devolver nombrebd;
}
público estático vacío setDbName (String dbName) {
JDBCUtil.dbName = dbName;
}
cadena estática pública getEncoding() {
codificación de retorno;
}
setEncoding público estático vacío (codificación de cadena) {
JDBCUtil.codificación = codificación;
}
cadena estática pública getPort() {
puerto de regreso;
}
setPort vacío estático público (puerto de cadena) {
JDBCUtil.puerto = puerto;
}
cadena estática pública getHost() {
anfitrión de regreso;
}
setHost vacío estático público (host de cadena) {
JDBCUtil.host = host;
}
Cadena estática pública getPasswrod() {
devolver contraseña;
}
setPasswrod vacío estático público (contraseña de cadena) {
JDBCUtil.contraseña = contraseña;
}
Cadena estática pública getUserName() {
devolver nombre de usuario;
}
público estático vacío setUserName (String nombre de usuario) {
JDBCUtil.userName = nombre de usuario;
}
cadena estática pública getUrl() {
URL de retorno;
}
setUrl vacío estático público (URL de cadena) {
JDBCUtil.url = URL;
}
}
importar java.sql.Conexión;
importar java.sql.DriverManager;
importar java.sql.PreparedStatement;
importar java.sql.ResultSet;
importar java.sql.SQLException;
/**
*
* @autor Hongten</br>
* @fecha 2012-7-16
*
*/
prueba JDBCT de clase pública {
@SuppressWarnings("acceso estático")
público estático vacío principal (String [] argumentos) {
JDBCUtil jdbcUtil = nuevo JDBCUtil();
String sql = "seleccionar * de mis correos";
intentar {
Class.forName(jdbcUtil.getDriver());
Conexión de conexión = DriverManager.getConnection(jdbcUtil.getUrl(), jdbcUtil.getUserName(), jdbcUtil.getPasswrod());
PreparedStatement ps = conn.prepareStatement(sql);
Conjunto de resultados rs = ps.executeQuery();
mientras (rs.siguiente()) {
System.out.println("id: " + rs.getInt(1) + " nombre : " + rs.getString(2) + " correo : " + rs.getString(3));
}
//Cerrar el conjunto de registros
si (rs! = nulo) {
intentar {
rs.cerrar();
} captura (SQLException e) {
e.printStackTrace();
}
}
// cerrar declaración
si (ps! = nulo) {
intentar {
ps.cerrar();
} captura (SQLException e) {
e.printStackTrace();
}
}
//Cerrar el objeto de enlace
si (conexión! = nulo) {
intentar {
conexión.close();
} captura (SQLException e) {
e.printStackTrace();
}
}
} captura (Excepción e) {
e.printStackTrace();
}
}
}