配置类 MyAppConfig
import com.test.springboot.service.HelloService;import org.springframework.context.annotation.*;/*** @Configuration:注解告诉springboot当前类是一个配置类,是来替代之前的spring配置文件。* 在配置文件中用<bean></bean>标签添加组件*/@Configuration@ComponentScan(basePackages = {"com.test.springboot"})public class MyAppConfig {//将方法的返回值添加到容器中,容器中这个组件默认的ID是方法名@Bean("helloService")public HelloService helloService() {System.out.println("配置类@bean给容器中添加组件了");return new HelloService();}}
HelloService 类
public class HelloService {public void say(String name) {System.out.println("****helloservice***" + name);}}
测试类
import com.test.springboot.bean.Person;import com.test.springboot.service.HelloService;import config.MyAppConfig;import org.junit.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.context.annotation.AnnotationConfigApplicationContext;import org.springframework.test.context.junit4.SpringRunner;/*** springboot单元测试* 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能*/@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringBoot02ConfigApplicationTests {@AutowiredPerson person;@AutowiredApplicationContext ioc;@Testpublic void testHelloService() {System.out.println("****************************************");ApplicationContext context = new AnnotationConfigApplicationContext(MyAppConfig.class);HelloService helloService = (HelloService) context.getBean("helloService");System.out.println(helloService);boolean flag = context.containsBean("helloService");System.out.println("bean是否存在:" + flag);helloService.say("小明");}}
执行结果
2019-05-08 17:27:32.553 INFO 2588 --- [ main] c.t.s.SpringBoot02ConfigApplicationTests : No active profile set, falling back to default profiles: default2019-05-08 17:27:34.786 INFO 2588 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019-05-08 17:27:35.123 INFO 2588 --- [ main] c.t.s.SpringBoot02ConfigApplicationTests : Started SpringBoot02ConfigApplicationTests in 3.134 seconds (JVM running for 4.183)****************************************配置类@bean给容器中添加组件了com.test.springboot.service.HelloService@6eaa21d8bean是否存在:true****helloservice***小明2019-05-08 17:27:35.741 INFO 2588 --- [ Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'Process finished with exit code 0
注解描述:
@Configuration: 指明当前类是一个配置类来替代之前的Spring配置文件,Spring boot的配置类,相当于Spring的配置文件。- Spring,通过配置文件添加组件
- Spring boot,通过配置类的方式添加组件
@ComponentScan:作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中@Bean:将方法的返回值添加到容器中
