SpringBoot使用@Configuration、@Bean给容器添加组件

  1. 新建Maven项目:helloworld。
  2. 修改pom.xml,添加依赖。
    修改后的pom.xml内容如下。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.13</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
  1. java目录下新建包com.example.boot.bean,在bean下新建类:User和Pet。
package com.example.boot.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
    private String name;
    private Integer age;
}
package com.example.boot.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Pet {
    private String name;
}
  1. 新建配置类com.example.boot.config.MyConfig,往容器中添加组件。
package com.example.boot.config;

import com.example.boot.bean.Pet;
import com.example.boot.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
    @Bean
    public User user01(){
        return new User("zhangsan",18);
    }

    @Bean
    public Pet pet01(){
        return new Pet("tomcat");
    }
}

其中,注解@Configuration告诉SpringBoot,MyConfig是一个配置类,等同于Spring中的配置文件,比如beans.xml。
注解@Bean,往容器中添加组件。
方法名user01,相当于配置文件中的bean的id(如果想自定义bean的id,可以@Bean(自定义名))。
返回值类型User,相当于配置文件中bean的class,即组件类型。
返回值new User(“zhangsan”,18),是组件在容器中创建的实例。
同样地,
方法名pet01,相当于配置文件中的bean的id。
返回值类型Pet,相当于配置文件中的bean的class,即组件类型。
返回值new Pet(“tomcat”),是组件在容器中创建的实例。
SpringBoot使用@Configuration、@Bean给容器添加组件

  1. 在com.example.boot下新建主程序类MainApplication,访问bean组件。
package com.example.boot;

import com.example.boot.bean.Pet;
import com.example.boot.bean.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class,args);

        User user01 = run.getBean("user01",User.class);
        System.out.println(user01.getName() + "," + user01.getAge());

        Pet cat = run.getBean("pet01",Pet.class);
        System.out.println(cat.getName());

    }
}
  1. 启动应用,查看控制台打印的信息。
    SpringBoot使用@Configuration、@Bean给容器添加组件
上一篇:Koltin24,flutterpageview预加载


下一篇:ES6 之 Class 类