Spring Boot从入门到入坟 | 底层注解篇:@Configuration详解

 为了能深入地掌握Spring Boot的自动配置原理,我们来看一下Spring Boot的一些底层注解,要知道它们是如何完成相关功能的。首先,我们来看一下怎么给容器里面添加组件。

我在这儿准备了两个组件,它们分别是:

  • 用户,即User类
package com.meimeixia.boot.bean;

/**
* @author liayun
* @create 2021-04-23 19:14
*
* 用户
*/
public class User {

    private String name;
    private Integer age;

    public User() {

    }

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

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

}
  • 宠物,即Pet类
package com.meimeixia.boot.bean;

/**
* @author liayun
* @create 2021-04-23 19:16
*
* 宠物
*/
public class Pet {

    private String name;

    public Pet() {

    }

    public Pet(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

}

如果我们是用以前原生的Spring来把以上这两个组件添加到容器中,那么我们应该是要这么来做的,即首先来创建一个Spring的配置文件,例如beans.xml,记住该文件得在src > main > resources目录下哟,然后使用<bean>标签来向容器中添加组件,如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="user01" class="com.meimeixia.boot.bean.User">
        <property name="name" value="zhangsan"></property>
        <property name="age" value="18"></property>
    </bean>

    <bean id="cat" class="com.meimeixia.boot.bean.Pet">
        <property name="name" value="tomcat"></property>
    </bean>

</beans>

现在,容器中就会有两个组件了,一个是User组件,一个是Pet组件。当然了,这是我们使用以前Spring XML配置文件的方式来向容器中注册组件的。

但是,我们现在使用的是Spring Boot,它已经不推荐我们使用Spring XML配置文件的这种方式了,既然不用Spring XML配置文件,那么它是怎么给容器中添加组件的呢?笨蛋,当然是使用注解呗,而且Spring Boot还有好几种办法向容器中注册组件呢!这里,我们先来看第一种办法吧!

由于我们使用了Spring Boot之后,已经不再写配置文件了,所以要向容器中注册组件,我们得使用Spring Boot底层一个叫@Configuration的注解了,该注解翻译过来就是配置的意思。不妨我们就新建一个类,例如MyConfig,然后我们给该类上标注上@Configuration这么一个注解,如下所示。

package com.meimeixia.boot.config;

import org.springframework.context.annotation.Configuration;

/**
 * @author liayun
 * @create 2021-04-23 19:42
 *
 */
@Configuration // 告诉Spring Boot这是一个配置类 == 配置文件
public class MyConfig {


}

其实,我们这样的做法(即创建一个类,然后在类上标注@Configuration注解)就是类似于创建了一个配置文件,在类上标注@Configuration注解,就相当于告诉Spring Boot这个文件是一个Spring XML配置文件。你现在明白了吧!@Configuration注解就是来告诉Spring Boot它标注的类是一个配置类的。

以前,我们能在Spring XML配置文件里面能做什么,我们现在也能做什么。以前我们是在配置文件里面使用<bean>标签向容器中添加组件的,现在,在配置类里面我们就不能写标签了,而是要写一个方法,比如现在想要向容器中添加一个User组件,我们就得在MyConfig配置类里面编写如下这样一个方法。

package com.meimeixia.boot.config;

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

/**
 * @author liayun
 * @create 2021-04-23 19:42
 *
 */
@Configuration // 告诉Spring Boot这是一个配置类 == 配置文件
public class MyConfig {

    @Bean // @Bean注解是给容器中添加组件的。添加什么组件呢?以方法名作为组件的id,返回类型就是组件类型,返回的值就是组件在容器中的实例
    public User user01() {
        User zhangsan = new User("zhangsan", 18);
        return zhangsan;
    }

}

可以看到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值