Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es la diferencia entre springBoot @RequestBody escrito usando métodos y usando parámetros?

¿Cuál es la diferencia entre springBoot @RequestBody escrito usando métodos y usando parámetros?

1.@Controller

El componente de la capa de control define una clase de controlador de springMVC y, a menudo, debe usarse junto con @RequestMapping.

2.@RestController

Equivalente a la combinación de @ResponseBody @Controller.

3.@Service

El componente de la capa de servicio se utiliza para marcar el componente de la capa empresarial, es decir, para definir un bean y crear automáticamente una instancia de un bean con una letra inicial minúscula de acuerdo con el nombre de clase del bean, o especifique El nombre del bean: @ servicio ("beanname ").

4.@Warehouse

El componente de capa de persistencia se utiliza para marcar el componente de acceso a datos, es decir, el componente DAO.

5.@Component

crear una instancia de pojo ordinario en el contenedor Spring es equivalente a

6.@RequestMapping

para la configuración El acceso La URL de la capa de control se puede utilizar en clases de controlador y métodos de controlador. Si se usa en la clase de controlador, el método en la clase de acceso es agregar la ruta en la clase, por ejemplo:

@controller

@ solicitud de mapeo("/personal/linkInfo ")

Clase pública LinkInfoController {

@ mapeo de solicitud(valor = "/add linkinfo ")

Cadena pública agregar linkinfo(LinkInfoReq LinkInfoReq){

linkinfoservice . addlinkinfo(linkInfoReq);

Devuelve "Redirect:/personal/linkInfo/tolink info";

}

}

La ruta de acceso al código anterior es XXX/personal/linkinfo/add linkinfo.

El código fuente de @RequestMapping es el siguiente:

A) valor: establezca la URL y la matriz a la que se accederá, y se pueden asignar múltiples solicitudes a un método. Admite configuración con comodines

Ejemplo de código:

@RequestMapping(value = {"/page ", "/page*"})

public void getInfo() {

}

La ruta de acceso al código anterior puede ser: XXX/page, XXX/pageadc y otras rutas que cumplan con las condiciones del valor.

b) Método: establezca el método de acceso y la matriz, pero configure múltiples métodos de acceso para asignarlos al mismo método. El valor predeterminado es el método GET.

Ejemplo de código:

@RequestMapping(value = "/page", método = RequestMethod. Post)

public void getInfo() {

}

El código/ruta de la página anterior solo se puede solicitar a través del método POST.

Los valores opcionales del método son get, head, post, put, patch, delete, options y trace.

C) params: Especifica que la solicitud debe contener ciertos valores de parámetros para que el método pueda manejarla. formación.

@RequestMapping(value = "/page ", params = {"type=1"})

public void getInfo() {

}

}

p>

El código/ruta de página anterior solo puede acceder a este método si el parámetro de solicitud contiene tipo y el valor es igual a 1.

D) encabezados: especifica que la solicitud debe contener algunos valores de encabezado específicos antes de que el método pueda procesar la solicitud. formación.

Código de muestra:

@RequestMapping(valor = "/página", encabezados = { " tipo de contenido = texto/plain " })

public void getInfo() {

}

Solo se puede acceder al código/ruta de la página anterior a través de content-type=text/plain en el encabezado.

E) consume: especifique el tipo de contenido para procesar la solicitud, como aplicación/json, texto/html.

F) Productos: especifique el tipo de contenido que se devolverá y solo devuélvalo si el tipo especificado está incluido en el tipo (Aceptar) del encabezado de solicitud.

7.@ResponseBody

Generalmente se usa en métodos de controlador. Su función es convertir el valor de retorno del método a un formato específico a través del HttpMessageConverter apropiado y escribirlo en el cuerpo. área de la respuesta. Luego regresa al cliente. Si no se utiliza la anotación @RequestBody, el valor de retorno del método se encapsulará en ModelAndView y se analizará en la vista de retorno.

8.@RequestParam

Los parámetros aceptados provienen de requestHeader, es decir, el encabezado de la solicitud, que se utiliza para recibir los parámetros de solicitud GET y POST y asignar estos parámetros a las variables anotadas por @RequestParam. También se puede obtener mediante solicitud. getparameter ("nombre"), este es el método de aceptación de parámetros predeterminado. Si @RequestParam no se usa como parámetro para un método de controlador, de forma predeterminada, @RequestParam también se usa para aceptar parámetros. Se utiliza para manejar el tipo de contenido: contenido codificado para la aplicación/x-www-form-urlencoded.

@RequestParam tiene tres parámetros de configuración:

a) Requerido: si es necesario, el valor predeterminado es verdadero, es necesario.

B) defaultValue: Valor predeterminado, utilizado cuando el parámetro solicitado está vacío.

c) Valor: El nombre del parámetro solicitado.

9.@Request Body

Los parámetros aceptados son de requestBody, es decir, el cuerpo de la solicitud, que generalmente se usa para procesar datos sin tipo de contenido: aplicación/x -Formato www-form-codificado, como aplicación/json, aplicación/xml y otros tipos de datos.

10.@Cableado automático

Puede marcar variables, métodos y constructores de miembros de clase, completar el trabajo de ensamblaje automático y eliminar métodos set y get.

11.@Resource

Su función es similar a @Autowired.

Diferencia:

@Resource es la anotación propia de Java. @Resource tiene dos atributos importantes, a saber, nombre y tipo. Spring analiza el atributo de nombre de la anotación @Resource como el nombre del; bean, analizando el atributo de tipo al tipo de bean.

Por lo tanto, si se usa el atributo de nombre, se usa la estrategia de inyección automática de byName, y cuando se usa el atributo Tipo, se usa la estrategia de inyección automática de byType. Si no se especifica el atributo de nombre ni el atributo de tipo, se utilizará la estrategia de inyección automática byName a través del mecanismo de reflexión.

@Autowired es una anotación de primavera, introducida en Spring 2.5. @Autowired solo inyecta según el tipo, no coincidirá con los nombres. Si el tipo no puede distinguir el objeto inyectado, debe confiar en la anotación @Qualifier para realizar modificaciones.

Secuencia de ensamblaje @Resource

a) Si se especifican el nombre y el tipo, el bean coincidente único para el ensamblaje se encuentra en el contexto Spring. Si no se encuentra, se generará una excepción. arrojado.

b) Si se especifica el nombre, se encontrará un bean con el nombre coincidente (id) en el contexto del ensamblado. Si no se encuentra, se generará una excepción.

c) Si se especifica el tipo, el bean único con el tipo coincidente se encuentra en el contexto ensamblado; si no se encuentran varios beans o ninguno, se generará una excepción.

d) Si no se especifica ni el nombre ni el tipo, se ensamblará automáticamente usando byName; si no coincide, recurrirá a un tipo original para hacer coincidir, y si coincide, se usará; se ensamblará automáticamente;

Se recomienda utilizar @Resource, no es necesario agradecer el método establecido, y esta anotación pertenece al propio Java, lo que reduce el acoplamiento con Spring.

12.@Value

Esta nota tiene dos usos:

a)@Value(" ${} ")

Esta El patrón de uso inyecta parámetros en el archivo de configuración.

De esta manera, com.title en el archivo de configuración se puede configurar en el atributo de título de LinkInfoController.

b)@value(" #{} ")

Esto significa que las expresiones SpEl generalmente se usan para obtener propiedades de un bean o para llamar a métodos de un bean.

De esta manera, el nombre del objeto de usuario se puede configurar en el atributo de nombre de LinkInfoController.

13.@Transactionality

Se utiliza para configurar la gestión de transacciones de Spring. La información del atributo es la siguiente:

El comportamiento de propagación de las cosas es el siguiente:

14.@SpringBootApplication

Esta anotación es en realidad una anotación combinada, y el código fuente es el siguiente:

14.@SpringBootApplication

p>

Hay tres notas importantes:

a)@configuración de arranque de spring

Como se puede ver en el código fuente, @SpringBootConfiguration hereda @Configuration La funcionalidad de estas dos anotaciones es la misma.

b)@Habilitar configuración automática

Esta anotación carga automáticamente todos los beans requeridos por la aplicación.

c)@Component Scan

Esta anotación escanea las clases en la ruta especificada y las agrega al contenedor de IoC. En springboot, @ComponentScan escanea el directorio hermano y sus subdirectorios de la clase a la que pertenece @SpringBootApplication de forma predeterminada.

15.@Configuration

A partir de Spring 3.0, @Configuration se utiliza para definir clases de configuración y puede reemplazar archivos de configuración xml. Una clase anotada contiene uno o más métodos anotados por @Bean, que serán escaneados por la clase AnnotationConfigApplicationContext o AnnotationConfigWebApplicationContext y utilizados para construir la definición del bean e inicializar el contenedor Spring.

16.@Bean

Esta anotación se usa principalmente en clases anotadas con @Configuration, y también se puede usar en clases anotadas con @Component. La identificación del bean agregado es el nombre del método. Igual a

@Configuration

La clase pública RedisConfig extiende CachingConfigurerSupport{

@Bean

administrador de caché público (fábrica de conexiones RedisConnectionFactory) {

RedisCacheManager RedisCacheManager = RedisCacheManager create(fábrica de conexiones);

Devolver redisCacheManager

}

}

El código anterior equivale a configurar en un archivo xml:

ltbeangt

ltbean id = " cache manager " class = " com . my page . config . RedisCacheManager "/ gt;

lt/beans gt;

17.@MapperScan

Especifique el paquete donde se ubicará la interfaz que será la clase de implementación. generar correspondiente La ubicación de adición de la clase de implementación: agregada encima de la clase de inicio de Springboot:

18.@EnableCaching

Esta anotación es una función de administración de caché basada en anotaciones en el marco de Spring. Esta anotación se agrega a partir de la versión 3.1 de primavera. Si utiliza esta anotación, no necesita configurar el administrador de caché en el archivo XML.

@Configuration

@EnableCaching

La clase pública RedisConfig extiende CachingConfigurerSupport{

/**

*Uso RedisCacheManager actúa como administrador de caché.

* @param fábrica de conexiones

* @return

*/

@Bean

administrador de caché público administrador de caché (fábrica de conexiones RedisConnectionFactory){

RedisCacheManager RedisCacheManager = RedisCacheManager create(fábrica de conexiones);

Devolver redisCacheManager

}

}

19.@ EnableRedisHttpSession

Se usa para configurar Springboot para que use Redis para almacenar sesiones. Esta anotación creará un Spring Bean llamado springSessionRepositoryFilter, que en realidad es un filtro. Este filtro es responsable de reemplazar la implementación HttpSession predeterminada original con Spring Session.

El código de muestra es el siguiente:

@Configuration

@ enableredishtpsession(maxInactiveIntervalInSeconds = 60 * 30)

Clase pública HttpSessionConfig {

}

Entre ellos, el atributo maxInactiveIntervalInSeconds es para establecer el tiempo efectivo de la sesión en milisegundos. El valor predeterminado es 1800 ms.

Pero en. De hecho, esto no es suficiente. Debe configurar la sesión de almacenamiento de Redis en el archivo de configuración:

spring session .store-type = redis

Eso es suficiente.