JavaConfig 实现Bean IOC

2022-04-29  本文已影响0人  内蒙小猿

JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的
版本, JavaConfig 已正式成为 Spring4 的核心功能 。

基于Java类进行配置

1、编写一个实体类,User

package com.zhao.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component //将这个类标注为Spring的一个组件,放到容器中!
public class User {

    private String name;

    public String getName() {
        return name;
    }

    @Value("孙悟空")
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

2、新建一个config配置包,编写一个MyConfig配置类

package com.zhao.config;

import com.zhao.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration //代表这是一个配置类
@ComponentScan("com.zhao.pojo")
@Import(zhaoConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
public class zhaoConfig {

    @Bean
    // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
    // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
    public User getUser(){
        return new User();
    }

}

3、测试

@Test
    public void testAnnotationUser(){
        ApplicationContext context = new AnnotationConfigApplicationContext(zhaoConfig.class);
        User user = context.getBean("getUser", User.class);
        System.out.println(user.getName());

    }

导入其他配置如何做呢?

1、我们再编写一个配置类!

package com.zhao.config;

import com.zhao.pojo.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration  //代表这是一个配置类
public class zhaoConfig2 {

    @Bean
    // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
    // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
    public Person getPerson(){
        return new Person();
    }
}

2、 在之前的配置类中我们来选择导入这个配置类

package com.zhao.config;

import com.zhao.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration //代表这是一个配置类
@ComponentScan("com.zhao.pojo")
@Import(zhaoConfig2.class)  //导入合并其他配置类,类似于配置文件中的 inculde 标签
public class zhaoConfig {

    @Bean
    // 通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
    // <bean id="getUser" class="com.zhao.pojo.User" ></bean>
    public User getUser(){
        return new User();
    }

}

3、测试, 通过 zhaoConfig 实现 zhaoConfig2 的Bean

这里使用的 zhaoConfig.class 来获取 Person,而不是直接使用 zhaoConfig2。
当然直接使用 zhaoConfig2 也是可以

    @Test
    public void testAnnotationPerson(){

        ApplicationContext context = new AnnotationConfigApplicationContext(zhaoConfig.class);
        Person person = context.getBean("getPerson", Person.class);
        System.out.println(person.getName());

    }
上一篇 下一篇

猜你喜欢

热点阅读