En el artículo anterior , las anotaciones de apertura se especificaron en el archivo de configuración y se especificó el paquete de análisis de anotaciones. Y utilizado @Autowired
(ensamblado automático de atributos de colaboración), @Component
(declarado como objeto Spring
gestionado bean
), @Value
(tipo simple designado de valor de atributo) para simplificar bean
el proceso de creación de instancias. En xml
la configuración abierta de la siguiente manera:
<!-- 配置注解扫描。 指定要扫描的包,这个包下的注解就会生效 -->
<context:component-scan base-package="com.weizu.pojo"/>
<context:annotation-config/>
@Component
public class User {
@Value("14")
private int age;
@Value("张三")
private String name;
@Autowired
private UserAddress address;
@Override
public String toString() {
return "User{" +
"age=" + age +
", name='" + name + '\'' +
", address=" + address +
'}';
}
}
Aquí, habrá una forma más conveniente de escribir:
Estructura del proyecto:
User.java
@Component
public class User {
@Value("14")
private int age;
@Value("张三")
private String name;
@Autowired
private UserAddress address;
@Override
public String toString() {
return "User{" +
"age=" + age +
", name='" + name + '\'' +
", address=" + address +
'}';
}
}
UserAddress.java
/**
* @Component等价于
* <bean id="address" class="com.weizu.pojo.UserAddress" p:address="西安"/>
*/
@Component
public class UserAddress {
@Value("西安")
private String address;
@Override
public String toString() {
return "UserAddress{" +
"address='" + address + '\'' +
'}';
}
}
config.java
// @Configuration 也使用了@Component,也会注册到容器中,被Spring托管
// @Configuration代表这是一个配置类,也就是我们之前的beans.xml
@Configuration
@ComponentScan("com.weizu.pojo")
public class config {
// @Bean 相当于之前写的bean标签
// 这个方法的名字,就相当于bean标签中的id属性
// 这个方法的返回值类型,也就是bean标签中的class属性
// 最终的返回值,也就是要注入到bean的对象
@Bean
public User getUser(){
return new User();
}
}
La prueba se utiliza, pero AnnotationConfigApplicationContext
no ClassPathXmlApplicationContext
:
public class myTest {
@Test
public void Test(){
// create and configure beans
ApplicationContext context = new AnnotationConfigApplicationContext(config.class);
User user = context.getBean("getUser", User.class);
System.out.println(user);
}
}
Efecto:
Descubrí que no hay beans.xml
configuración del archivo en el artículo anterior , y se han completado el bean
alojamiento y la inyección correctos .
@Configuration
También se usa @Component
, también se registrará en el contenedor y se Spring
administrará, lo @Configuration
que significa que esta es una clase de configuración, que es la que usamos antes beans.xml
.
@Bean
Equivalente a la bean
etiqueta escrita anteriormente
- El nombre de este método es equivalente
bean
al atributo id en la etiqueta - El tipo de valor de retorno de este método, que es
bean
elclass
atributo de la etiqueta. - El valor de retorno final, que es
bean
el objeto que se inyectará.
@ComponentScan("com.weizu.pojo")
Se especifica la ruta del paquete de escaneo.
Este tipo de método de anotación puro SpringBoot
se puede ver en todas partes de China.
Dirección de video: https://www.bilibili.com/video/BV1WE411d7Dv?p=15