以前,Spring推荐使用XML的方式来定义Bean及Bean之间的装配规则,但是在Spring3.0之后,Spring提出的强大的JavaConfig这种类型安全的Bean装配方式,它基于Java代码的灵活性,使得装配的过程也变得及其灵活。

@Configuration注解

  我们在定义JavaConfig类时,都会在其上加注@Configuration注解,来表明这是一个配置类,@Configuration注解底层是@Component注解,而且这个注解会被AnnotationConfigApplicationContext来进行加载,AnnotationConfigApplicationContext是ApplicationContext的一个具体实现,代表依据配置注解启动应用上下文。

@ComponentScan注解

  我们使用JavaConfig的目的是为了实现以前XML配置实现的功能,首先就是组件扫描功能,将我们使用特定注解标注的类统一扫描加载到Spring容器,这一功能就是依靠@ComponentScan注解来实现的,我们可以为其指定位置参数来指定要扫描的包。

@Bean注解

  使用@Bean注解我们可以实现XML配置中手动配置第三方Bean的功能,这里我们使用方法来定义Bean,并在方法前面加注@Bean注解,表示要将该方法返回的对象加载到Spring容器中,这样就对我们的方法定义带来了一些限制,这些限制包括方法的大概格式:

  1-方法带返回值,且返回类型为你要加载的第三方类类型

  2-方法的名称为默认的Bean的name,如果要自定义Bean的name,可以使用@Bean注解的name属性。

  3-要实现注入只需要将要注入的Bean的类型作为参数,调用该类的带参数的构造器构建这个Bean,或者采用第二种方式:先创建这个类的对象,然后调用该对象的set方法进行注入,以被注入的Bean的方法为参数

JavaConfig能够等价看成是XML文件,不过它只是用Java编写的。它的完整文档在网上可以看到,而这篇文章帮助你开始使用JavaConfig。让我们把下面的XML文件移植为一个JavaConfig来作为一个例子吧:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloBean" class="com.yiibai.hello.impl.HelloWorldImpl"></beans>
下面是等价的文件: 
package com.yiibai.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.yiibai.hello.HelloWorld;
import com.yiibai.hello.impl.HelloWorldImpl;@Configuration
public class AppConfig {@Bean(name="helloBean")public HelloWorld helloWorld() {return new HelloWorldImpl();}}
a.一个简单的bean
package com.spring;public interface Helloeorld {void printHelloWorld(String msg);
}
package com.spring;public class HelloworldImpl implements Helloeorld{@Overridepublic void printHelloWorld(String msg) {System.out.println("Hello : " + msg);}}

b.javaConfig注解:使用 @Configuration 注释告诉 Spring,这是核心的 Spring 配置文件,并通过 @Bean 定义 bean
package com.spring;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*使用 @Configuration 注释告诉 Spring,这是核心的 Spring 配置文件,
并通过 @Bean 定义 bean*/
@Configuration
public class TestConfig {@Bean(name="helloeorld")public Helloeorld getHello(){return new HelloworldImpl();}
}

c.测试main方法:package com.spring; 

import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class TestMain {   public static void main(String[] args) {     ApplicationContext context = new AnnotationConfigApplicationContext(TestConfig.class);     Helloeorld obj = (Helloeorld) context.getBean("helloeorld");     obj.printHelloWorld("Spring Java Config");   } }

Spring JavaConfig相关推荐

  1. java spring config_Spring重温(二)--Spring JavaConfig

    1.从Spring 3起,JavaConfig功能已经包含在Spring核心模块,它允许开发者将bean定义和在Spring配置XML文件到Java类中.但是,仍然允许使用经典的XML方式来定义bea ...

  2. 丢掉xml使用JavaConfig配置Spring

    Spring JavaConfig 最近撸了一遍Spring action 4,发现里面讲的都不再使用xml文件来配置spring,全都采用Java代码来配置. 用Java代码配置的话,感觉要比xml ...

  3. 这 10 道 Spring Boot 常见面试题你需要了解下

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 本文转载于公众号:Java团长 1.什么是Spring Boot? 多年来,随着新功能的增加,sp ...

  4. 面试那点小事,你从未见过的spring boot面试集锦(附详细答案)

    一, 什么是spring boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问页面https://spring.io/projects,我们将看到所有在应用程序中使用的不同功能的 ...

  5. Spring Boot 常见面试题

    1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有 ...

  6. 芋道 Spring Boot 自动配置原理

    转载自  芋道 Spring Boot 自动配置原理 1. 概述 友情提示:因为本文是分享 Spring Boot 自动配置的原理,所以需要胖友有使用过 Spring Boot 的经验.如果还没使用过 ...

  7. Spring Boot面试题(2020最新版)

    转载自  Spring Boot面试题(2020最新版) 概述 什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主 ...

  8. Spring Boot 面试题

    转载自  Spring Boot 面试题 问题一 什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面 ...

  9. spring java配置_Spring Java配置

    spring java配置 我发现许多我认识的Spring开发人员仍然不了解或使用Spring Java Configuration(aka JavaConfig). Spring 3.0引入了此功能 ...

  10. Spring Java配置

    我发现许多我认识的Spring开发人员仍然不了解或使用Spring Java Configuration(aka JavaConfig). Spring 3.0引入了此功能,该功能使Spring可以完 ...

最新文章

  1. 【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)
  2. keil5改工程名称_修改Keil工程名称并添加其他模块文件
  3. django----admin
  4. 智能布线系统,“智”在何方
  5. mysql 角色管理_MySQL 8 用户和角色管理入门
  6. 图的遍历——深度优先搜索+广度优先搜索
  7. php 邮件收发 (乱码)
  8. linux android交叉编译,【转】搭建arm-linux-gcc交叉编译工具链环境(Android原生(JNI)开发环境搭建)...
  9. java arraylist对象_Java中ArrayList的对象引用问题
  10. HDFS原理 | NameNode和DataNode工作原理(图形化通俗易懂)
  11. 过QQ游戏大厅的SX保护
  12. springboot starter自定义实现公共模块
  13. CSS+DIV布局中absolute和relative区别
  14. c语言乘方程序,C语言求幂计算的高效解法
  15. 中国己内酰胺市场前景策略分析与投资调研评估报告2022年版
  16. 京东物流数据质量管理体系
  17. 【微服务实战之Docker容器】第一章-下载及安装
  18. 云服务器除了阿里云外其他哪个比较好?
  19. kie-api介绍和使用
  20. GD32F450,CAN1收发数据总结

热门文章

  1. jquery常用选择器和常用方法
  2. iOS/Android·全球
  3. hduoj 2602Bone Collector
  4. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
  5. Eclipse使用之添加字体
  6. windows8 认识及使用
  7. c/c++ 宏中#和##的用法
  8. Windows workflow foundation之旅(三)——指南2(创建状态机工作流)(上)
  9. 认识与防御XSS攻击
  10. 8th 本周工作量及进度统计