**配置类 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)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests { @Autowired
Person person;
@Autowired
ApplicationContext ioc; @Test
public 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: default
2019-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@6eaa21d8
bean是否存在: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 :将方法的返回值添加到容器中

最新文章

  1. 在Thinkphp中使用AJAX实现无刷新分页
  2. Yii2 中禁用csrf校验
  3. Unity StartCoroutine 和 yield return 深入研究
  4. UI auto test
  5. android UI进阶之用ViewPager实现欢迎引导页面
  6. CCF真题之最大矩形
  7. 求助 WPF ListViewItem样式问题
  8. Android IOS WebRTC 音视频开发总结(六三)-- 2016国内IM云服务行业分析
  9. [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 &amp; 大型控件的ImageField)
  10. sql,mybatis,javascript分页功能的实现
  11. 层层递进Struts1(七)详解DispatchAction
  12. Clover周报模块 -- 开发总结
  13. 【Java线程】Lock、Condition
  14. git使用说明
  15. div+css位置绝对定位和相对定位
  16. DDD设计一个电商网站
  17. Spyder项目创建,打开与使用
  18. apache 限制IP访问
  19. Android View框架总结(三)View工作原理
  20. sqlserver简便创建用户并授权

热门文章

  1. MongoDB:分片(简介 &amp; 自动分片 &amp; 片键)
  2. iOS--判断字符串NSString中数字、中文、大小写英文
  3. java远程调用rmi入门实例
  4. TestNG demo
  5. Redis+EJB实现缓存(一)
  6. 新拿到的app跑的时候出现问题
  7. searchkick HasMany Associations | index related model fields
  8. 关于static和const
  9. IE67下float左右对齐
  10. Spring Boot 整合Filter