Lecture07-容器-[实验05]配置类和@Bean注解

文章目录

    [toc]

    单词词性音标含义
    aliasn. / v./ˈeɪliəs/别名(编程中常用于为组件或配置指定替代名称,如Spring中可为Bean设置alias,通过别名也能获取该Bean,增强配置灵活性)
    druidn./ˈdruːɪd/德鲁伊(此处特指阿里巴巴的Druid数据库连接池,是Java中常用的高性能连接池组件,支持监控、防SQL注入等功能)
    Scopen./skəʊp/作用域(Spring中用于定义Bean的生命周期范围,如singleton(单例,全局唯一)、prototype(原型,每次请求创建新实例)、request(请求范围)等,决定Bean的创建和销毁时机)

    Lecture07-容器-[实验05]配置类和@Bean注解

    一、使用第三方类的障碍

    想要把一个类加入 IoC 容器时,如果是我们自己的类,那么直接加注解即可,但是第三方jar包中的类,都是只读文件,我们无法做任何修改

    image-20250523192116448


    二、配置类

    在Spring环境下,使用@Configuration注解标记的类,我们通常称为配置类

    由于@Configuration注解也是以@Component注解为基础的,所以配置类也会被加入IoC容器

    image-20250523161716810

    @Configuration
    public class Demo15Config {
    }
    

    三、举例

    第一步:创建配置类

    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class CarFactoryConfig {
        
        
        
    }
    

    第二步:创建被测试的类(模拟jar包中的类)

    ①CarMachine

    public class CarMachine {
    
        private String carName;
        private Double carPrice;
    
        @Override
        public String toString() {
            return "CarMachine{" +
                    "carName='" + carName + '\'' +
                    ", carPrice=" + carPrice +
                    '}';
        }
    
        public CarMachine(String carName, Double carPrice) {
            this.carName = carName;
            this.carPrice = carPrice;
        }
    
        public CarMachine() {
        }
    }
    

    ②CarFactory

    public class CarFactory {
    
        private String factoryName;
        private Double moneyBalance;
        private CarMachine carMachine;
    
        @Override
        public String toString() {
            return "CarFactory{" +
                    "factoryName='" + factoryName + '\'' +
                    ", moneyBalance=" + moneyBalance +
                    ", carMachine=" + carMachine +
                    '}';
        }
    
        public CarFactory(String factoryName, Double moneyBalance, CarMachine carMachine) {
            this.factoryName = factoryName;
            this.moneyBalance = moneyBalance;
            this.carMachine = carMachine;
        }
    
        public CarFactory() {
        }
    }
    

    第三步:使用@Bean注解

    @Configuration
    public class CarFactoryConfig {
    
        @Bean
        public CarMachine carMachine() {
            return new CarMachine("比亚迪", 12000.33);
        }
    
        @Bean
        public CarFactory carFactory() {
            return new CarFactory("比亚迪工厂", 666.66, carMachine());
        }
    
    }
    
    end