Uno: comprensión de las anotaciones:
Resumen de anotaciones
En JavaSE, el propósito de usar anotaciones es relativamente simple, como marcar funciones obsoletas, ignorar advertencias, etc. Las anotaciones juegan un papel más importante en JavaEE/Android, por ejemplo, para configurar cualquier aspecto de la aplicación, reemplazando el código engorroso y la configuración XML que quedaba en la versión anterior de JavaEE.
El modelo de desarrollo futuro se basa en anotaciones. JPA se basa en anotaciones. Spring 2.5 y superior se basan en anotaciones. Hibernate 3.x y posteriores también se basan en anotaciones. Ahora, parte de Struts2 también se basa en anotaciones. Las anotaciones son una tendencia. , en cierta medida, se puede decir: marco = anotación + reflexión + patrón de diseño.
Dos: ejemplos de anotaciones comunes
Cuando use Anotación, agregue el símbolo @ delante y use la Anotación como modificador . Se utiliza para decorar los elementos del programa que soporta.
Ejemplo 1: generar anotaciones relacionadas con la documentación
@author indica el autor que desarrolló este tipo de módulo, usado entre varios autores, dividido
@version indica la versión de este tipo de módulo
@see se refiere al turno, es decir, al tema relacionado
@since desde qué versión se agregó
@param La descripción de un parámetro en el método, si no hay parámetro, no se puede escribir
@return Descripción del valor de retorno del método, si el tipo de valor de retorno del método es nulo, no se puede escribir
@exception explica las excepciones que puede lanzar el método. Si el método no lanza explícitamente excepciones con throws, no se puede escribir
en
Las tres etiquetas @param @return y @exception solo se usan para métodos.
Requisitos de formato de @param: @param nombre del parámetro tipo de parámetro descripción del parámetro
Requisitos de formato para @return: @return tipo de valor devuelto descripción del valor devuelto
Requisitos de formato de @exception: @exception tipo de excepción descripción de excepción
@param y @exception pueden ser múltiples en paralelo
Por ejemplo:
package com.annotation.javadoc;
/**
* @author shkstart
* @version 1.0
* @see Math.java
*/
public class JavadocTest {
/**
* 程序的主方法,程序的入口
* @param args String[] 命令行参数
*/
public static void main(String[] args) {
}
/**
* 求圆面积的方法
* @param radius double 半径值
* @return double 圆的面积
*/
public static double getArea(double radius){
return Math.PI * radius * radius;
}
}
Ejemplo 2: Comprobación de formato en tiempo de compilación (tres anotaciones básicas integradas en JDK)
@Override : anulación restringida del método de la clase principal, esta anotación solo se puede usar para métodos
@Deprecated: Se usa para indicar que el elemento modificado (clase, método, etc.) está obsoleto. Generalmente porque la estructura modificada es peligrosa o existen mejores alternativas
@SuppressWarnings : suprime las advertencias del compilador
Ejemplo:
package com.annotation.javadoc;
public class AnnotationTest{
public static void main(String[] args) {
@SuppressWarnings("unused")
int a = 10;
}
@Deprecated
public void print(){
System.out.println("过时的方法");
}
@Override
public String toString() {
return "重写的toString方法()";
}
}
Ejemplo tres: seguimiento de las dependencias del código e implementación de funciones alternativas del archivo de configuración
Servlet3.0 proporciona anotaciones, lo que hace que ya no sea necesario implementar Servlets en el archivo web.xml.
Ejemplo:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException { }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
} }
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
Gestión de "transacciones" en el marco de primavera
@Transactional(propagation=Propagation.REQUIRES_NEW,
isolation=Isolation.READ_COMMITTED,readOnly=false,timeout=3)
public void buyBook(String username, String isbn) {
//1.查询书的单价
int price = bookShopDao.findBookPriceByIsbn(isbn);
//2. 更新库存
bookShopDao.updateBookStock(isbn);
//3. 更新用户的余额
bookShopDao.updateUserAccount(username, price);
}
<!-- 配置事务属性 -->
<tx:advice transaction-manager="dataSourceTransactionManager" id="txAdvice">
<tx:attributes>
<!-- 配置每个方法使用的事务属性 -->
<tx:method name="buyBook" propagation="REQUIRES_NEW"
isolation="READ_COMMITTED" read-only="false" timeout="3" />
</tx:attributes>
</tx:advice>
¡gracias por ver! ! !