美文网首页
JavaConfig 实现Bean IOC

JavaConfig 实现Bean IOC

作者: 内蒙小猿 | 来源:发表于2022-04-29 15:57 被阅读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());

    }

相关文章

  • JavaConfig 实现Bean IOC

    JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在...

  • Spring:Ioc容器中Bean生命周期

    容器的实现是通过Ioc管理Bean的生命周期来实现的。Spring Ioc容器在对Bean的生命周期进行管理时提供...

  • JavaConfig如何实现bean依赖

    我们日常的工作中常常出现bean之间的相互依赖,如果使用xml配置,常常比较清晰,如下: 而JavaConfig中...

  • Spring-IoC容器文档(5.0.7BUILD-SNAPSH

    1.1 Spring IoC容器和bean简介 本章介绍了Spring Framework实现的控制反转(IoC)...

  • Spring笔记

    IOC/DI 1.Xml实现 bean 注入方式 (set注入、构造注入)bean 作用域 (singleton ...

  • Spring Bean

    Bean 生命周期 实例化,new 对Bean进行配置 -- IOC注入 如果实现BeanNameAware接口,...

  • Spring Bean配置项(二)

    Id:在整个ioc容器中这个bean的唯一标示Class:这个bean的实现类Scope:bean的范围,作用域C...

  • 九、使用注解实现IOC的配置

    一、本课目标 掌握使用注解实现IOC的方法 二、使用注解实现IOC 2.1准备工作 注解方式将Bean的定义信息和...

  • Spring IOC容器

    所有IOC容器都需要实现BeanFactory接口,此接口是IOC容器的顶级接口,提供多个获取bean的抽象方法,...

  • 阐述Spring框架中Bean的生命周期?

    ① Spring IoC容器找到关于Bean的定义并实例化该Bean。② Spring IoC容器对Bean进行依...

网友评论

      本文标题:JavaConfig 实现Bean IOC

      本文链接:https://www.haomeiwen.com/subject/zjrlyrtx.html