Assemblage automatique 4-Bean IoC (Inversion of Control) de Spring, entièrement en mode Java

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 Springgéré bean), @Value(type simple de valeur d'attribut désigné) pour simplifier beanle processus d'instanciation. Dans xmlla 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:
Insérez la description de l'image ici
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 AnnotationConfigApplicationContextpas 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:
Insérez la description de l'image ici
trouvé qu'il n'y a pas de beans.xmlconfiguration du fichier dans l' article précédent , et que l' beanhébergement et l'injection appropriés ont été effectués .
@ConfigurationÉgalement utilisé @Component, il sera également enregistré dans le conteneur et Springgéré, @Configurationce 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 beanl' classattribut dans l'étiquette
  • La valeur de retour finale, qui est beanl'objet à injecter

@ComponentScan("com.weizu.pojo")Le chemin du package d'analyse est spécifié.

Ce type de méthode d'annotation pure SpringBootpeut être vu partout en Chine.


Adresse vidéo: https://www.bilibili.com/video/BV1WE411d7Dv?p=15

Je suppose que tu aimes

Origine blog.csdn.net/qq_26460841/article/details/115052854
conseillé
Classement