一、 @SpringBootApplication
Entre SpringBoot
las clases de inicio creadas automáticamente por el marco para nosotros, @SpringBootApplication
las etiquetas de anotación se utilizan para modificar la clase de inicio.
@SpringBootApplication
La etiqueta de anotación es en realidad una etiqueta de anotación compuesta, que @EnableAutoConfiguration
generalmente @ComponentScan
se usa en la clase principal
anotación | ilustrar |
---|---|
@SpringBootApplication | Se usa para declarar clases de inicio para modificación. |
@EnableAutoConfiguration | Es springboot la anotación central para la configuración automática, a través de la cual spring la aplicación debe bean inyectarse en el contenedor. |
@ComponentScan | Se utiliza para escanear automáticamente las clases identificadas por las anotaciones y generarlas ioc en el contenedor bean . El ámbito de escaneo predeterminado son @ComponentScan las clases en el paquete de clase de configuración y los subpaquetes donde se encuentran las anotaciones. |
Dos, @Configuración, @Bean
anotación | ilustrar |
---|---|
@Configuración | Actuar sobre la clase para configurar spring el contenedor (contexto de la aplicación), lo que equivale a usar la clase como un archivo spring de configuraciónxml |
@Frijol | Cree bean un objeto y agréguelo al contenedor, actuando sobre el método. |
Ejemplo:
SSM
Durante la integración del marco nativo , si queremos IOC
agregar un objeto personalizado al contenedor, lo que debemos hacer es agregar la declaración de contenido de la siguiente etiqueta
debajo Spring
de la etiqueta del talón del archivo de configuración utilizado por el marco:
<bean id="user" class="com.qf.testspringboot.pojo.User">
<property name="id" value="1"/>
<property name="username" value="张三"/>
<property name="age" value="22"/>
</bean>
Pero en SpringBoot
el marco, podemos IOC
inyectar directamente objetos personalizados en el contenedor creando y devolviendo objetos Java.
Este proceso depende de @Configuration
las etiquetas de anotación y @Bean
las etiquetas de anotación.
Primero preparamos una User
clase:
@Data //记得要导入Lombok相关的依赖
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private Integer age;
}
Luego cree una UserConfiguration
clase y use @Configuration
la etiqueta de anotación para esta clase para declarar que esta clase es una clase de configuración:
@Configuration
public class UserConfiguration {
}
Cree un método en esta clase, el valor de retorno del método es User
tipo y el nombre del método es IOC
el nombre del objeto inyectado en el contenedor, y use @Bean
la etiqueta de anotación para este método:
@Configuration
public class UserConfiguration {
@Bean
public User user() {
/*
下列代码等价于:
<bean id="user" class="com.qf.testspringboot.pojo.User">
<property name="id" value="1"/>
<property name="username" value="张三"/>
<property name="age" value="22"/>
</bean>
方法的返回值数据类型等价于<bean>标签中的class属性取值
方法的方法名等价于<bean>标签中的id属性取值
*/
User user = new User(1, "张三", 22);
return user;
}
}
En este punto, el flujo lógico SpringBoot
del marco para escanear e IOC
inyectar objetos en el contenedor es:
- Cuando el marco SpringBoot escanea
@Configuration
el tipo decorado con etiquetas de anotación, considerará esta clase como una clase de configuración; @Bean
El objeto de valor de retorno del método decorado con etiquetas de anotación en la clase de configuración se inyectará automáticamenteIOC
en el contenedor para su almacenamiento;@Bean
El tipo de datos del valor de retorno del método de decoración de la etiqueta de anotación es equivalente al valor del atributo de la etiquetaclass
;- De forma predeterminada,
@Bean
el nombre del método decorado con la etiqueta de anotación es equivalente alid
valor del atributo de la etiqueta, es decir, elIOC
nombre del objeto en el contenedor.
De esta forma, podemos inyectar XML
fácilmente IOC
objetos Java personalizados en el contenedor sin usar archivos de configuración.
3. @AutoWired
@Autowired
De forma predeterminada, se ensambla por tipo, que a menudo se usa en las clases de implementación de la capa empresarial y las clases de implementación de la capa de persistencia.
Ejemplo:
En TestController
la clase, @Autowired
se inyecta automáticamente un objeto a través de la etiqueta de anotación User
, y cuando test
se accede al método, User
se imprime el objeto:
@Controller //SpringMVC当中的注解标签都还能用
public class TestController {
@Autowired
private User user; //自动注入自定义的User对象
@RequestMapping("/test")
@ResponseBody
public String test() {
System.out.println(user); //打印这个User对象
return "Hello SpringBoot!";
}
}
El resultado de ejecución del programa al acceder test
al método:
四、@Servicio、@Controlador、@Repositorio、@Componente
anotación | ilustrar |
---|---|
@Servicio | Para la capa de negocios, la capa de lógica de negocios service se inyecta en spring el contenedor |
@Controlador | contenedor controller de inyección de capa de controlspring |
@Repositorio | Contenedor dao de inyección de capa de persistenciaspring |
@Componente | contenedor domain de inyección comúnspring |
Ejemplo, @ResponseBody, @RestController
anotación | ilustrar |
---|---|
@ResponseBody | Actúe sobre el método o la clase, deje que el resultado de retorno del método se escriba directamente en HTTP response body , sin pasar por el analizador de vistas, y los datos devueltos se mostrarán directamente en la página. |
@RestController | Es una combinación de @Controller y , actuando sobre la clase, el efecto es igual a sumar y @ResponseBody sobre la clase@ResponseBody @Controller |
六、@RequestMapping、@GetMapping、@PostMapping
anotación | ilustrar |
---|---|
@RequestMapping | url Use esta anotación para acceder a través de la configuración , que puede get ser o publicar |
@GetMapping | Use esta anotación para url acceder a través de la configuración y limitar get el método de solicitud |
@PostMapeo | Use esta anotación para url acceder a través de la configuración y limitar post el método de solicitud |
Ejemplo, @RequestParam, @RequestBody
anotación | ilustrar |
---|---|
@RequestParam | Se utiliza principalmente para recibir url? los siguientes parámetros get o post solicitudes, siempre que haya parámetros detrás, se url? pueden obtener los parámetros correspondientes |
@RequestBody | Esta anotación se usa para obtener datos del cuerpo de la solicitud ( body ), get no hay cuerpo de solicitud, por lo que generalmente se usa para post solicitudes |
- En
GET
las solicitudes, no se puede utilizar@RequestBody
- En la solicitud,
POST
se puede usar@RequestBody
y@RequestParam
, pero si se usa@RequestBody
, se debe unificar la configuración de conversión de parámetros. - Puede usar múltiples
@RequestParam
datos de búsqueda,@RequestBody
no