丢弃重口味的xml配置--spring4用groovy配置bean
来源:互联网 发布:ubuntu不能切换中英文 编辑:程序博客网 时间:2024/05/01 20:33
spring4之前,bean的配置可以主要分为两种方式,一种是使用基于xml,个人非常讨厌这种方式,因为明明一件很简单的事,放在xml中就会多了不少繁杂的信息。另一种方式,是从spring3.0开始,spring提供了是基于java的配置,相比于xml的配置方式,看起来会好一点儿。而在几天前release的spring4.0中,我们可以用groovy作为spring的配置文件啦!比起最早的基于xml配置,使用groovy会更加灵活,而且干扰信息会更少。比起基于java的配置,groovy配置还要更加精炼!
这篇博客就对现有的xml,java配置方式进行回顾,然后再简单的展示spring4提供的groovy配置方式。本篇博客的代码在github上:https://github.com/kiwiwin/spring4-bean-demo
例子中,我们使用gradle引入依赖:
compile("org.springframework:spring-core:4.0.0.RELEASE",
"org.springframework:spring-context:4.0.0.RELEASE")
下面展示一个很简单的例子,一场足球赛,有homeTeam主队和awayTeam客队,这两个bean是通过构造函数传入。另外还有homeScore和awayScore表示主队和客队分别得到的分数,通过property的方式传入。
下面比较xml、java、groovy三种配置方式
1.使用xml进行bean配置
football-match-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="footballMatch" class="org.kiwi.spring.groovy.FootballMatch">
<constructor-arg ref="homeTeam"/>
<constructor-arg ref="awayTeam"/>
<property name="homeScore" value="3"/>
<property name="awayScore" value="1"/>
</bean>
<bean id="homeTeam" class="org.kiwi.spring.groovy.FootballTeam">
<constructor-arg value="Manchester United"/>
</bean>
<bean id="awayTeam" class="org.kiwi.spring.groovy.FootballTeam">
<constructor-arg value="AC Milan"/>
</bean>
</beans>
虽然我们的IDE已经足够聪明能够帮我们生成xml的各种标签,但是这样的东西看起来确实还是让人觉得不爽。不过如果你真的还是很喜欢这种,那我只能说你开心就好。
2.使用java进行bean配置
首先定义bean:
FootballMatchConfig.java
package org.kiwi.spring.groovy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FootballMatchConfig {
@Bean
public FootballMatch footballMatch() {
final FootballMatch footballMatch = new FootballMatch(homeTeam(), awayTeam());
footballMatch.setHomeScore(3);
footballMatch.setAwayScore(1);
return footballMatch;
}
@Bean
public FootballTeam homeTeam() {
return new FootballTeam("Manchester United");
}
@Bean
public FootballTeam awayTeam() {
return new FootballTeam("AC Milan");
}
}
然后从context中定义java配置文件的位置:
football-match-java-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan
base-package="org.kiwi.spring.groovy" />
</beans>
比起基于纯粹xml的bean配置,基于java的bean配置不再受限于xml本身。配置本身更清晰。
3.使用groovy进行bean配置
FootballMatchConfig.groovy
import org.kiwi.spring.groovy.FootballMatch
import org.kiwi.spring.groovy.FootballTeam
beans {
homeTeam(FootballTeam, "Manchester United")
awayTeam(FootballTeam, "AC Milan")
footballMatch(FootballMatch, homeTeam, awayTeam) {
homeScore = 3
awayScore = 1
}
}
简单吧!谁看到这种简单的配置方式不会心动呢?
与之前的ApplcationContext不同,为了支持基于groovy的bean配置。spring4中提供了新的正对Groovy的ApplicationContext:GenericGroovyApplicationContext。
public class FootballApp {
public static void main(String[] args) {
final GenericGroovyApplicationContext context = new GenericGroovyApplicationContext("FootballMatchConfig.groovy");
final FootballMatch footballMatch = (FootballMatch) context.getBean("footballMatch");
System.out.println(footballMatch.display());
}
}
重口味的程序员可能觉得这是吃饱了没事儿撑的用groovy进行bean配置。但是想下maven和gradle,maven基于xml,gradle基于groovy。同样的配置,在gradle中显得十分精炼,同时,因为gradle使用了groovy这样一种语言,而不是xml这种文件,使其更加灵活,在定义task方面会更加的方便。
在这篇博客中,虽然没有写太多基于groovy配置更加强大的方面,但是简洁是显而易见的。简洁就是美。
我们可以非常保守的想一下,在我们所有可以使用xml的地方,其最终都会被其他简洁的语言所替代。
温馨提示:
在初次在IntelliJ中尝试使用groovy进行bean配置时,发生过找不到配置文件的问题。这是因为groovy的配置文件后缀是.groovy。IntelliJ的编译器会把它当成是源文件,而不是配置文件。所以需要在Compiler设置中的Resource Patterns那一栏中去掉groovy对应的!?*.groovy即可
- 丢弃重口味的xml配置--spring4用groovy配置bean
- 丢弃重口味的xml配置--spring4用groovy配置bean
- spring4用groovy配置bean
- Spring4.0支持Groovy配置
- Spring4-2 Bean配置
- 3、Spring4之Bean 配置的细节
- Spring4----使用注解方式配置bean和bean的属性
- Spring4 学习笔记(3)-Spring 基于 XML 的方式配置 Bean
- Spring4 学习笔记(3)-Spring 基于 XML 的方式配置 Bean(供自己学习)
- Spring4.0学习笔记003——Bean的配置一(基于XML文件)
- Spring4.0学习笔记004——Bean的配置二(基于XML文件)
- Spring4.0学习笔记005——Bean的配置三(基于XML文件)
- Spring4.3入门 配置bean
- Spring bean.xml的配置
- Spring Bean的XML配置
- 2、Spring4之Bean的两种配置方式
- Spring4.3.x 浅析xml配置的解析过程(4)——解析bean标签及其所有子标签
- spring4.xml配置样例
- eclipse中variable references non-existion resource可能原因及解决方案
- 深度学习:又一次推动AI梦想
- uestc 第五届ACM趣味程序设计竞赛第二场(正式赛)棋盘
- Fragment
- AKCMS常用标签集锦,记录下来以备回头找不到。
- 丢弃重口味的xml配置--spring4用groovy配置bean
- MYSQL基本操作(二)
- ubuntu编译内核
- 步步为营 .NET三层架构解析系列总结
- 僵尸进程,孤儿进程是如何产生
- KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释 [zz]
- 从Delphi开始学Cocos2dx-3.0[5]:鼠标按下移动弹起与单点触摸
- 宫锁沉香
- 【Linux】Linux Kernel-Processes(一)