轻松入门springboot之自动配置

126 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。

自动配置

javaconfig

spring中Bean的配置⽅式的 :

  1. Xml配置⽅式

  2. Annotation配置⽅式

启用 Annotaion 配置

设置组件扫描与 Bean 命名

设置组件扫描的基础包

设置组件扫描的基础包

  1. JavaConfig配置⽅式

springboot中推荐使⽤JavaConfig的配置⽅式,可通过⼀个具体的例⼦了解JavaConfig的使⽤。

例如: springboot-javaconfig项⽬

image.png User和Group类要配置到spring容器中,如果是xml⽅式的话,就是在xml中配置bean标签即可,如果是annotation⽅式的话,在类上⾯加⼊@Component注解即可,如果是JavaConfig⽅式的话,编写⼀个java的配置类即可,例如下⾯的AppConfig.java

User类


public class User {

private long id;

private String name;

private Group group;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;
}

public Group getGroup() {

return group;

}

public void setGroup(Group group) {

this.group = group;

}

}

Group类:

public class Group {

private long id;

private String name;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

注意:User和Group这俩个类,既没有配置xml中的bean标签,也没有给这俩个类上加@Component注解

JavaConfig类:

package com.briup.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.briup.bean.Group;

import com.briup.bean.User;

@Configuration

public class AppConfig {
@Bean

public User user(Group group) {

User user = new User();

user.setGroup(group);

return user;

}

@Bean

public Group group() {

return new Group();

}

}

该配置类放到springboot⼊⼝类的包下或者其⼦包下,会被⾃动扫描读取到,其本质上和xml配置以及

annotation配置的原理是⼀样的,只是变了另⼀种形式。

测试类:

package com.briup.demo;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import com.briup.bean.User;

@SpringBootTest

class DemoApplicationTests {

@Autowired

private User user;

@Test

void contextLoads() {

System.out.println(user);

System.out.println(user.getGroup());

}

}

直接使⽤junit的测试⽅式运⾏contextLoads⽅法即可:

image.png

从结果中可以看出,user对象以及user⾥⾯关联的group对象都可以获取的到。

这个测试的⼤致过程是:

image.png

注意,和⼊⼝类同包或⼦包下⾯的配置类可以被⾃动扫描到并读取