系列十七、各种各样的bean

一、Spring bean

1.1、概述

一句话,被Spring容器管理的bean就是Spring bean。

二、Java bean VS Spring bean

2.1、概述

Java bean是程序员自己new 出来的,Spring bean是Spring工厂创建出来的。

三、配置bean的方式

3.1、概述

  所谓配置bean,是指如何将一个普通的Java类交由Spring容器进行管理。

3.2、配置方式

# 第一种
xml
 
# 第二种
xml + 注解
 
# 第三种
JavaConfig
 
# 第四种
@Import

四、@Component vs @Bean

4.1、概述

        @Component是Spring中的一个注解,通常标识在一个类上面,用于说明该类是被Spring容器管理的,其内部是通过反射机制调用构造方法完成实例化,@Bean也是一个注解,标识在方法上,通常和@Configuration注解搭配使用,其方法名就是bean的name,通过这种方式程序员可以自己控制bean的实例化过程。

4.2、案例

4.2.1、Car

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/26 14:28
 * @Description:
 */
@Component
@Getter
@Setter
public class Car implements Serializable {

    private String name;
    private String description;

    public Car() {
        System.out.println("Car的无参构造执行了...");
    }
    public Car(String name, String description) {
        this.name = name;
        this.description = description;
        System.out.println("Car的有参构造执行了...");
    }
}

4.2.2、Tank

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/26 14:31
 * @Description:
 */
@ToString
@Getter
@Setter
public class Tank implements Serializable {

    private String name;
    private String description;
    private String producer;

    public Tank() {
        System.out.println("Tank的无参构造执行了...");
    }

    public Tank(String name, String description, String producer) {
        System.out.println("Tank的有参构造执行了...");
        this.name = name;
        this.description = description;
        this.producer = producer;
    }
}

4.2.3、MySpringConfig

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/23 15:29
 * @Description:
 */
@Configuration
@ComponentScan(basePackages = {"org.star"})
public class MySpringConfig {

    @Bean
    public Tank tank() {
        Tank tank = new Tank("东风0001","加满油能跑10000公里","中国");
        return tank;
    }

}

4.2.4、AopFullAnnotationMainApp

/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/11/23 15:14
 * @Description:
 */
@Slf4j
public class AopFullAnnotationMainApp {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MySpringConfig.class);

        Car car = context.getBean("car", Car.class);
        Tank tank = context.getBean("tank", Tank.class);
        log.info("car:{},tank:{}", car, tank);

    }

}

你可能感兴趣的:(Spring5系列,java,spring)