Spring入门学习——指定Bean引用
来源:互联网 发布:php flash播放mp4 编辑:程序博客网 时间:2024/06/06 20:21
package com.cgy.springrecipes.sequence;
/**
* 用于定义前缀生成操作
*/
public interface PrefixGenerator {
public String getPrefix();
}
package com.cgy.springrecipes.sequence;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 使用特殊模式格式化当前系统日期以生成前缀
*/
public class DatePrefixGenerator implements PrefixGenerator{
private DateFormat formatter;
public void setPattern(String pattern) {
this.formatter = new SimpleDateFormat(pattern);
}
public String getPrefix() {
return formatter.format(new Date());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<property name="suffix" value="A"/>
<property name="initial" value="10000"/>
<property name="prefixGenerator">
<ref bean="datePrefixGenerator"/>
</property>
</bean>
<bean id="datePrefixGenerator" class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"/>
</bean></beans>
此时运行出来的序列为2017033010000A和2017033010001A
<ref>元素的bean属性名称可以使对IoC容器中的任何Bean的引用(即使这个Bean不在同一个XML配置文件中定义)。如果想引用相同XML文件中的一个Bean,应该使用local属性。使用local属性的好处是,xml编辑器将帮助校验BeanID是否存在于相同的XML中,因为local的值是一个XML ID引用。
简写形式
<property name="prefixGenerator" ref="datePrefixGenerator"/>
但是注意:该简写相当于使用bean属性,因此无法利用xml编辑器的验证。
********************************************************************************************************************************************Spring2.X之后还有一个便利的简写来指定Bean引用,利用pschema将bean引用作为<bean>元素的一个属性。同时注意为了
区分Bean引用与简单的属性值,必须在属性名后加上-ref后缀。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- <bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<property name="suffix" value="A"/>
<property name="initial" value="10000"/>
<property name="prefixGenerator">
<ref local="datePrefixGenerator"/>
</property>
</bean> -->
<bean id="sequenceGenerator"
class="com.cgy.springrecipes.sequence.SequenceGenerator"
p:suffix="A"
p:initial="10000"
p:prefixGenerator-ref="datePrefixGenerator"/>
<bean id="datePrefixGenerator" class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"/>
</bean>
</beans>
package com.cgy.springrecipes.sequence;
public class SequenceGenerator {
private PrefixGenerator prefixGenerator;
private String suffix;
private int initial;
private int counter;
public SequenceGenerator() {}
public SequenceGenerator(PrefixGenerator prefixGenerator) {
this.prefixGenerator = prefixGenerator;
}
......省略
}
*****************************************************************************************************************************************<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<property name="suffix" value="A"/>
<property name="initial" value="10000"/>
<constructor-arg>
<ref local="datePrefixGenerator"/>
</constructor-arg>
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<property name="suffix" value="A"/>
<property name="initial" value="10000"/>
<property name="prefixGenerator">
<bean class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"/>
</bean>
</property>
</bean></beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator">
<property name="suffix" value="A"/>
<property name="initial" value="10000"/>
<constructor-arg>
<bean class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"/>
</bean>
</constructor-arg>
</bean></beans>
- Spring入门学习——指定Bean引用
- Spring入门学习——bean属性配置(一)
- Spring入门学习——bean属性配置(二)
- Spring入门学习——继承Bean配置
- Spring入门学习——设置Bean作用域
- Spring入门学习——使用Bean感知容器
- Spring入门学习——创建Bean后处理器
- Spring入门学习——外部化Bean配置
- Spring入门学习——为集合元素指定数据类型
- Spring 学习笔记(4)—— Bean 的基本配置、依赖注入(DI)、注入参数引用其他Bean
- Spring入门学习——使用Spring的FactoryBean创建Bean
- spring bean中引用bean
- 3、spring入门—Spring Bean的装配(上)
- 4、spring入门—Spring Bean的装配(下)
- Spring入门学习——使用工厂Bean和Utility Schema定义集合
- Spring入门学习——用XML配置自动装配Bean
- Spring入门学习——用@Autowired和@Resource自动装配Bean
- Spring入门学习——调用静态工厂方法创建Bean
- 【leetcode】Two Sum II
- LinkedList源码阅读
- CentOS给予port端口权限(搭建web…
- Spring入门学习——解决构造函数歧义
- 新浪博客分栏显示功能的测试
- Spring入门学习——指定Bean引用
- 用WebSocket接收服务器数据并控制W…
- Spring入门学习——为集合元素指定数据类型
- 添加button和onclicklistener后Att…
- Spring入门学习—— 一些概念
- 科学论文类型分类(letter, p…
- MySQL:索引工作原理
- Spring入门学习——使用Spring的FactoryBean创建Bean
- JavaScript之eval函数