Spring @Configuration
下面是一个典型的spring配置文件(application-config.xml):
- <beans>
- <bean id="orderService" class="com.acme.OrderService"/>
- <constructor-arg ref="orderRepository"/>
- </bean>
- <bean id="orderRepository" class="com.acme.OrderRepository"/>
- <constructor-arg ref="dataSource"/>
- </bean>
- </beans>
然后你就可以像这样来使用是bean了:
Java代码
- ApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml");
- OrderService orderService = (OrderService) ctx.getBean("orderService");
现在Spring JavaConfiguration这个项目提供了一种通过java代码来装配bean的方案:
- @Configuration
- public class ApplicationConfig {
- public @Bean OrderService orderService() {
- return new OrderService(orderRepository());
- }
- public @Bean OrderRepository orderRepository() {
- return new OrderRepository(dataSource());
- }
- public @Bean DataSource dataSource() {
- // instantiate and return an new DataSource …
- }
- }
然后你就可以像这样来使用是bean了:
- JavaConfigApplicationContext ctx = new JavaConfigApplicationContext(ApplicationConfig.class);
- OrderService orderService = ctx.getBean(OrderService.class);
这么做有什么好处呢?
1.使用纯java代码,不在需要xml
2.在配置中也可享受OO带来的好处
3.类型安全对重构也能提供良好的支持
4.依旧能享受到所有springIoC容器提供的功能
Spring @Configuration的更多相关文章
- Spring Configuration Check Unmapped Spring configuration files found
Spring Configuration Check Unmapped Spring configuration files found 项目中有xml文件,但没有被用IntelliJ 导入现有工程时 ...
- IntelliJ 15 unmapped spring configuration files found
IntelliJ Spring Configuration Check 用IntelliJ 导入现有工程时,如果原来的工程中有spring,每次打开工程就会提示:Spring Configuratio ...
- Spring @Configuration 和 @Component 区别
Spring @Configuration 和 @Component 区别 一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个 ...
- 出现unmapped spring configuration files found
intell idea启动出现unmapped spring configuration files found提示. 把spring里面的内容都打勾.
- IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
当把自己的一个项目导入IDEA之后,Event Log提示“Unmapped Spring configuration files found.Please configure Spring face ...
- "Unmapped Spring configuration files found.Please configure Spring facet."解决办法
最近在学习使用IDEA工具,觉得与Eclipse相比,还是有很多的方便之处. 但是,当把自己的一个项目导入IDEA之后,Event Log提示"Unmapped Spring configu ...
- spring configuration 注解
org.springframework.context.annotation @annotation.Target({ElementType.TYPE}) @annotation.Retention( ...
- Spring Configuration注解使用
@Configuration是spring.xml的注解版. @ComponentScan是<context:component-scan base-package="com.cosh ...
- Spring @Configuration 和 @Bean 注解
@Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...
随机推荐
- 关于String str =new String("abc")和 String str = "abc"的比较--转
原文地址:https://www.cnblogs.com/OnlyCT/p/5433410.html String是一个非常常用的类,应该深入的去了解String 如: String str =new ...
- 小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql
一.使用注解配置映射器 动态sql: 用的并不是很多,了解下: Student.java 实体bean: package com.cy.model; public class Student{ pri ...
- 2018-2019 20165226 Exp6 信息搜集与漏洞扫描
2018-2019 20165226 Exp6 信息搜集与漏洞扫描 目录 一.实验内容说明及基础问题回答 二.实验过程 Task1 各种搜索技巧的应用 检测特定类型的文件 搜索网址目录结构 trace ...
- Linux命令详解-ftp服务器配置
1.ftp服务器配置 1.ftp安装: rpm –qa | grep ftp 2.查看安装内容: rpm-ql |more 3.启动ftp服务: service vsftpd start 4.配置文件 ...
- javascript创建对象之构造函数模式(二)
对上一章节的工厂模式进行代码重写 function Human(name, sex) { this.name = name; this.sex = sex; this.say = function ( ...
- 腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法
目前最好的高动态范围(HDR)成像方法通常是先利用光流将输入图像对齐,随后再合成 HDR 图像.然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷.最近,腾讯优图和香港科技大学的研究 ...
- python之路07文件处理
一 操作文件的方法: f.read() #读取所有内容,光标移动到文件末尾 f.readline() #读取一行内容,光标移动到第二行首部 f.readlines() #读取每一行内容,存放于列 ...
- [Python] numpy.random.rand
numpy.random.rand numpy.random.rand(d0, d1, ..., dn) Random values in a given shape. Create an array ...
- RowToColumn
SELECT S.NAME, sum(decode(S.COURSE,'语文',S.SCORE,0))"语文", sum(decode(S.COURSE,'数学',S.SCORE, ...
- 时间模块 --- time
表示时间有三种方法:timestamps Format String struct-time 1 时间戳 :通常来说,时间戳表示的是从1970年一月一日00:00:00开始按秒计算的偏移量,使 ...