「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。
自动配置
javaconfig
spring中Bean的配置⽅式的 :
-
Xml配置⽅式
-
Annotation配置⽅式
启用 Annotaion 配置
设置组件扫描与 Bean 命名
设置组件扫描的基础包
设置组件扫描的基础包
- JavaConfig配置⽅式
springboot中推荐使⽤JavaConfig的配置⽅式,可通过⼀个具体的例⼦了解JavaConfig的使⽤。
例如: springboot-javaconfig项⽬
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⽅法即可:
从结果中可以看出,user对象以及user⾥⾯关联的group对象都可以获取的到。
这个测试的⼤致过程是:
注意,和⼊⼝类同包或⼦包下⾯的配置类可以被⾃动扫描到并读取