以前使用 Spring 框架时,会将一些常见的配置放入 xml,但是 SpringBoot 官方不提倡 xml 配置,提倡使用配置类来进行配置。
一、新建一个 Java 类
package com.example.springbootboot02config.service;
/**
* @author liyanan
* @date 2019/12/22 20:03
*/
public class DemoService {
public void add() {
System.out.println("add() ...");
}
}
二、新建一个配置类,使用 @Configuration 将 Java 类注入 Spring 容器里
package com.example.springbootboot02config.config;
import com.example.springbootboot02config.service.DemoService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author liyanan
* @date 2019/12/22 22:41
*/
@Configuration
public class DemoServiceConfig {
@Bean
public DemoService demoService2() {
System.out.println("demoService2 组件注入成功");
return new DemoService();
}
}
方法名相当于 xml 配置文件 bean 标签的 id,方法返回值是对应注入的对象所属的类。
三、单元测试
package com.example.springbootboot02config;
import com.example.springbootboot02config.bean.Demo;
import com.example.springbootboot02config.bean.Emp;
import org.junit.Ignore;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.junit.Assert.assertNotNull;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
class SpringbootBoot02ConfigApplicationTests {
@Autowired
ApplicationContext applicationContext;
@Test
public void testDemoService2() {
Object demoService2 = applicationContext.getBean("demoService2");
assertNotNull(demoService2);
}
}
测试通过,表示已经成功向 Spring 容器注入该组件。