Dans l' article précédent , les annotations d'ouverture étaient spécifiées dans le fichier de configuration et le package d'analyse des annotations était spécifié. Et utilisé @Autowired
(assemblage automatique d'attribut de collaboration), @Component
(déclaré comme objet Spring
géré bean
), @Value
(type simple de valeur d'attribut désigné) pour simplifier bean
le processus d'instanciation. Dans xml
la configuration ouverte comme suit:
<!-- 配置注解扫描。 指定要扫描的包,这个包下的注解就会生效 -->
<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 +
'}';
}
}
Ici, il y aura une manière plus pratique d'écrire:
Structure du projet:
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();
}
}
Le test est utilisé, mais n'est AnnotationConfigApplicationContext
pas 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);
}
}
Effet:
trouvé qu'il n'y a pas de beans.xml
configuration du fichier dans l' article précédent , et que l' bean
hébergement et l'injection appropriés ont été effectués .
@Configuration
Également utilisé @Component
, il sera également enregistré dans le conteneur et Spring
géré, @Configuration
ce qui signifie qu'il s'agit d'une classe de configuration, ce que nous utilisions auparavant beans.xml
.
@Bean
Équivalent à l' bean
étiquette précédemment écrite
- Le nom de cette méthode équivaut
bean
à l'attribut id dans la balise - Le type de valeur de retour de cette méthode, qui est
bean
l'class
attribut dans l'étiquette - La valeur de retour finale, qui est
bean
l'objet à injecter
@ComponentScan("com.weizu.pojo")
Le chemin du package d'analyse est spécifié.
Ce type de méthode d'annotation pure SpringBoot
peut être vu partout en Chine.
Adresse vidéo: https://www.bilibili.com/video/BV1WE411d7Dv?p=15