1. Use anotaciones:
En el archivo de configuración de Spring ApplicationContext.xml, agregue Anotation Scan. El elemento de configuración configura el escaneo de paquetes especificados para implementar la inyección de dependencia.
<? xml versión = "1.0" encoding = "utf-8"?> <span style = "font-size: 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://wwww.springframwork.org/schemt" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd ">" <AOP: SuppectJ-AutoProxy/> <Context: Annotation-Config/> <Context: Component-Scan Base-Package = "com.test"/> // dónde escanear </rel beans>
2. Comentarios comunes:
@Controlador@servicio@autowired@requestmapping@requestparam@modelattribute@cacheo@caqueflush@resource@postconstruct@predestroy@repositorio@componente (no recomendado)@sessionattributes@initbinder@requerido@califier
3. Anotaciones de primavera comúnmente utilizadas:
@Controller (para la capa de presentación)
Después de usar la anotación de @Controller para identificar la acción del usuario, significa que la acción de usuario se debe entregar al contenedor de primavera para la administración. Habrá una acción llamada "Useraction" en el contenedor de primavera. Este nombre se toma en función del nombre de la clase de usuario de usuario. Nota: Si @Controller no especifica su valor 【@Controller】, el nombre predeterminado del frijol es minúscula en la primera letra del nombre de clase. Si especifica el valor 【@Controller (value = "useraction")】 o 【@Controller ("userAction")】, entonces use el valor como el nombre del bean.
La Acción de usuario aquí también usa la anotación @Scope. @Scope ("prototipo") significa que el alcance de la acción se declara como un prototipo. Puede usar el alcance = "prototipo" del contenedor para garantizar que cada solicitud tenga una acción separada para manejarlo, evitando los problemas de acción de seguridad del hilo en los puntales. Spring El alcance predeterminado es Singleton Mode (Scope = "Singleton"), que solo creará un objeto de acción. Cada acceso es el mismo objeto de acción. Los datos no son seguros. Struts2 requiere que cada acceso corresponda a una acción diferente. Scope = "Prototype" puede garantizar que se cree un objeto de acción cuando hay una solicitud.
@Controlador
@Scope ("Prototype") Public ClassationAction extiende Baseaction <Serem> {}@ Service (utilizado en la capa de lógica de negocios)
Tenga en cuenta que la anotación @Service se utiliza bajo la clase de implementación de la interfaz de servicio, no en la interfaz.
Esto refleja muy bien la inversión de control en la primavera. No estamos dejando que el objeto instancie el objeto en sí mismo y confíe activamente en el objeto, sino que usamos un contenedor para crear el objeto, que es administrado por el COI. Ejemplo:
Cuando Action quiere usar UserServiceImpl, no tiene que crear activamente una instancia de UserServiceImpl. Se ha entregado una instancia de UserServiceImpl se ha entregado a Spring. Spring ofrece a la instancia de UserServiceImpl creada a la acción, y puede usarla directamente después de obtener la acción. La acción se puede usar inmediatamente después de crear activamente la instancia de UserServiceImpl, pero se hace pasar por pasivamente la primavera para crear la instancia de UserServiceImpl antes de inyectarla en acción. Esto muestra que el "control" de Action sobre la clase "UserServiceImpl" ha sido "invertido". Resulta que la iniciativa está en mis propias manos. Tengo que usar la instancia de clase "UserServiceImpl". Puedo tomar la iniciativa de usarla de inmediato. Pero ahora no puedo llevar la iniciativa a nuevas instancias de la instancia de clase "UserServiceImpl". Spring ha eliminado el poder de la nueva instancia de clase "UserServiceImpl". Solo Spring puede nuevas instancias de la instancia de clase "UserServiceImpl", y la acción solo puede esperar a que Spring cree la clase "UserSe" después de la instancia de la clase RVICEMPL ", por favor" por favor "Spring Déle la instancia creada de la clase" UserServiceImpl "para que pueda usar" UserServicePl ". Esta es la idea central de la primavera" Inversión de control ", también llamada" Inyección de dependencia "." Inyección de dependencia "." La inyección de la inyección de dependencia "también es fácil. UserServiceImpl para funcionar, por lo que crea una dependencia de UserServiceMpl.
@Service ("UserService") Public Class UserServiceImpl implementa UserService {}@ Repository (para la gestión de datos)
El autor usa la herramienta para generar el modelo de datos de la capa de entidad y el mapeador en reversa, por lo que no se usa esta anotación, pero esto simplemente inyecta un frijol en el contenedor de resorte.
@Repository (value = "userdao") Public Class UserDaoImpl extiende a BasedAoMPL <Usater> {}4. Annotaciones de SpringMVC comúnmente utilizadas:
@AUtowired (inyectado por tipo)
Anotar variables, métodos y constructores de miembros de la clase para completar el trabajo de ensamblaje automático. En pocas palabras, es llamar al frijol y decirle a Spring que existe y que se gestiona en el contenedor.
@AutoWired Search del artículo en línea de Spring de acuerdo con el tipo de frijoles. El tipo de registro debe ser único, de lo contrario se informará una excepción.
Cuando la anotación @autowired actúa en el tipo de mapa, si la clave del mapa es el tipo de cadena, Spring agregará todos los tipos en el contenedor al tipo de valor correspondiente del valor del mapa, y use la ID o el nombre de Bean como la clave del mapa.
@AUtowired Otra función es que si se anota en el tipo de BeanFactory, el tipo de aplicación AplicationContext, el tipo de resumen, el tipo de ApplicationEventPublisher y el tipo de mensajes de mensajes, Spring inyectará automáticamente instancias de estas clases de implementación sin operaciones adicionales.
@Autowired
servicio de informes privados de IraPortService;
@Resource (inyectado por su nombre)
Similar a @aUtowired, @Resource busca de forma predeterminada según el nombre del bean. Si no se encuentra, buscará por tipo.
@Recurso
DataSource de datos privado; // inyectar el bean llamado 'DataSource'
@Resource (name = "DataSource")
@Resource (type = dataSource.class)
Pregunta extendida: ¿Qué es el ensamblaje por tipo y qué es el ensamblaje por su nombre?
Por tipo significa que cuando hay un frijol con el mismo tipo que el atributo especificado en el contenedor de resorte, el atributo se ensamblará automáticamente; Si hay múltiples frijoles de este tipo, se ejecutará una excepción y se señala que el ensamblaje automático por tipo no se puede usar; Si no se encuentra el frijol a juego, no pasará nada.
El llamado nombre significa ensamblaje automático basado en el nombre del atributo. Este artículo verificará los frijoles en el contenedor de resorte que son exactamente los mismos que el nombre del atributo y realizarán un ensamblaje automático.
@RequestMapping (dirección de solicitud de mapa)
Las anotaciones utilizadas para manejar las asignaciones de direcciones solicitadas se pueden usar en clases o métodos. Para su uso en una clase, todos los métodos que representan las solicitudes de respuesta en una clase toman esta dirección como la ruta principal.
Hay seis atributos, a saber:
1. Valor, método;
Valor: especifica la dirección real de la solicitud, y la dirección especificada puede estar en el modo de plantilla URI (que se explicará más adelante);
Método: especifique el tipo de método solicitado, obtenga, publique, ponga, elimine, etc.;
2. Consume, produce
Consumidores: especifica el tipo de envío (tipo de contenido) que maneja la solicitud, como la aplicación/JSON, el texto/html;
Produce: Especifica el tipo de contenido devuelto, que solo se devolverá si el tipo (de aceptación) en el encabezado de solicitud de solicitud contiene el tipo especificado;
3. Parámetros, encabezados
Params: especifica que la solicitud debe contener ciertos valores de parámetros antes de que se pueda procesar el método.
Encabezados: Especifica que la solicitud debe contener algunos valores de encabezado especificados para que el método maneje la solicitud.
@Controlador@requestmapping ("/bbtforum.do") public class bbtforumController {@RequestMapping (params = "método = listboardTopic") public string listboardTopic (int topicid, user) {}}@requestmapping ("/softpg/downsoftpg.do")@requestmapping (value = "/" softpg/ajax método = requestmethod.post) @RequestMapping (valor = "/osu/producto/detall.do", params = {"modify = false"}, método = requestmethod.post)@RequestParam (obtenga el valor del parámetro de solicitud)
Por ejemplo, nuestra dirección de acceso en el navegador es: localhost: 8080/hello? Id = 1000, y obtenemos el valor de identificación, por ejemplo:
@RestControllerPublic Class HELOCONTROLLER {@RequestMapping (value = "/hello", método = requestMethod.get) public String Sayshello (@RequestParam ("ID") ID de Integer) {return "id:"+id; }}@PathVaribale (obtener datos en URL)
@RestControllerPublic Class HELLOCONTROLLER {@RequestMapping (value = "/hello/{id}", método = requestmethod.get) public sayshello (@PathVariable ("id") ID de entero) {return "Id:"+id; }}@ResponseBody (Tipo de retorno JSON)
Función: Esta anotación se usa para convertir el objeto devuelto por el método del controlador en el formato especificado a través del HTTPMessageConverter apropiado y escribirlo en el área de datos del cuerpo del objeto de respuesta.
Tiempo de usar: los datos devueltos no son una página con la etiqueta HTML, sino que se usan cuando los datos en algún otro formato (como JSON, XML, etc.);
Resumir
Lo anterior es el análisis de anotaciones comunes en Spring SpringMVC presentadas por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!