首先看一下我的目录结构
现在我想为EmpService这个组件编写一个配置类,那么首先在springboot包下创建一个config包,在该包下创建一个配置类EmpCofig。 我们先看看这两个类中的代码
EmpService.java
package com.qinqi.springboot.service;
public class EmpService {
public void add() {
System.out.println("add().....");
}
}
EmpConfig.java
package com.qinqi.springboot.config;
import com.qinqi.springboot.service.EmpService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
// EmpService组件 的配置类
@Configuration
public class EmpConfig {
@Bean
public EmpService empService2() {
System.out.println("EmpService 组件注入成功");
return new EmpService();
}
}
分析:* @Configuration 它是spring里的注解,用于标识当前类是一个配置类,来表示对应spring配置文件
* @Bean 标识的方法用于向容器当中注入组件
* 1. 返回值 return new EmpService(); 就是注入容器中的组件对象
* 2. 方法名 empService2 就是组件的 id
通过以上两个注解,我们就成功地把组件 EmpService 的对象注入Spring容器中了。
下面是测试类代码,该段代码写在工程目录的 SpringBoot02ConfigApplicationTests 类中:
/**
* @RunWith(SpringRunner.class) 表示在当前测试类我们可以把所有的组件都拿到
* @Autowired 将对象注入
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests {
@Autowired
ApplicationContext context;
@Test
public void testEmpConfig() {
EmpService empService2 = (EmpService) context.getBean("empService2");
System.out.println(empService2);
}
ApplicationContext 继承自 BeanFactory ,其中有getBean方法,通过传入id empService2 获取到组件对象。
控制台结果: