下面是一个典型的spring配置文件(application-config.xml):

  1. <beans>
  2. <bean id="orderService" class="com.acme.OrderService"/>
  3. <constructor-arg ref="orderRepository"/>
  4. </bean>
  5. <bean id="orderRepository" class="com.acme.OrderRepository"/>
  6. <constructor-arg ref="dataSource"/>
  7. </bean>
  8. </beans>

然后你就可以像这样来使用是bean了:

Java代码

  1. ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml");
  2. OrderService orderService = (OrderService) ctx.getBean("orderService");

现在Spring JavaConfiguration这个项目提供了一种通过java代码来装配bean的方案:

  1. @Configuration
  2. public class ApplicationConfig {
  3. public @Bean OrderService orderService() {
  4. return new OrderService(orderRepository());
  5. }
  6. public @Bean OrderRepository orderRepository() {
  7. return new OrderRepository(dataSource());
  8. }
  9. public @Bean DataSource dataSource() {
  10. // instantiate and return an new DataSource …
  11. }
  12. }

然后你就可以像这样来使用是bean了:

  1. JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);
  2. OrderService orderService = ctx.getBean(OrderService.class);

这么做有什么好处呢?

1.使用纯java代码,不在需要xml

2.在配置中也可享受OO带来的好处

3.类型安全对重构也能提供良好的支持

4.依旧能享受到所有springIoC容器提供的功能

Spring @Configuration的更多相关文章

  1. Spring Configuration Check Unmapped Spring configuration files found

    Spring Configuration Check Unmapped Spring configuration files found 项目中有xml文件,但没有被用IntelliJ 导入现有工程时 ...

  2. IntelliJ 15 unmapped spring configuration files found

    IntelliJ Spring Configuration Check 用IntelliJ 导入现有工程时,如果原来的工程中有spring,每次打开工程就会提示:Spring Configuratio ...

  3. Spring @Configuration 和 @Component 区别

    Spring @Configuration 和 @Component 区别 一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个 ...

  4. 出现unmapped spring configuration files found

    intell idea启动出现unmapped spring configuration files found提示. 把spring里面的内容都打勾.

  5. IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法

    当把自己的一个项目导入IDEA之后,Event Log提示“Unmapped Spring configuration files found.Please configure Spring face ...

  6. "Unmapped Spring configuration files found.Please configure Spring facet."解决办法

    最近在学习使用IDEA工具,觉得与Eclipse相比,还是有很多的方便之处. 但是,当把自己的一个项目导入IDEA之后,Event Log提示"Unmapped Spring configu ...

  7. spring configuration 注解

    org.springframework.context.annotation @annotation.Target({ElementType.TYPE}) @annotation.Retention( ...

  8. Spring Configuration注解使用

    @Configuration是spring.xml的注解版. @ComponentScan是<context:component-scan base-package="com.cosh ...

  9. Spring @Configuration 和 @Bean 注解

    @Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...

随机推荐

  1. VBA注释临时

    Sub shishi() '按ABCDE为多选题定义答案; 'A.沙利度胺 B.异烟肼 C.利福平 'd.氯法齐明 E.氨苯砜 '46.各型麻风病的首选药物为(D) 'A.沙利度胺 B.异烟肼 C.利 ...

  2. 1053 Path of Equal Weight (30 分)

    Given a non-empty tree with root R, and with weight W​i​​ assigned to each tree node T​i​​. The weig ...

  3. url的命名与反向解析

    url命名和反向解析  1. 命名   # url(r'^press_list/$', views.press_list,name='press_list'),     url(r'^pre/$', ...

  4. JavaScript字符串练习

    题目: 预备代码: // 自定义输出 var log = function () { console.log.apply(this, arguments); }; // ====== // 测试 // ...

  5. 逆地址解析协议RARP

    解决的问题 一般系统启动时,从引导磁盘中获取ip 有些机器没有引导磁盘,如X终端或无盘工作站,则需要采用其他方法来获得IP地址 解决的过程 无盘系统依据RARP协议 从接口卡上读取唯一的硬件地址,然后 ...

  6. leetcode150

    public class Solution { public int EvalRPN(string[] tokens) { Stack<int> ST_NUM = new Stack< ...

  7. angular 路由动态加载JS文件

    纯属分享 //把下面代码放在新建JS文件里,引入在头部 //angural路由功能--一个路由动态加载JS (function (name, context, definition) { if (ty ...

  8. HTML5拖动

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. 文件的基本操作(python)

    文件打开: 1. f = open('yesterday,‘r+’,encoding = ‘utf-8’) 读取的方式加载为Utf-8 r    打开文件并写, 只适用于文字类 r+   打开文件并读 ...

  10. Java Collection.sort 排序升序, 降序问题

    不多说,记住2点, 直接上代码(下面是降序): package mall; import java.util.ArrayList; import java.util.Collections; impo ...