Compare Beans From Factory Bean : Xml Bean Factory « Spring « Java Tutorial

File: context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=""

    <bean id="sha" class="MessageDigestFactoryBean">
        <property name="algorithm" value="SHA1"/>

    <bean id="md5" class="MessageDigestFactoryBean"/>



import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.xml.XmlBeanFactory;

public class Main {
  public static void main(String[] args) throws Exception {
    XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("context.xml"));
    MessageDigestFactoryBean factoryBean = (MessageDigestFactoryBean) factory.getBean("&sha");
    String d1 = (String) factory.getBean("sha");
    String d2 = (String) factoryBean.getObject();
    System.out.println("Equal created? " + (d1.equals(d2)));


class MessageDigestFactoryBean implements FactoryBean, InitializingBean {
  private static final String DEFAULT_ALGORITHM = "MD5";

  private String algorithm = DEFAULT_ALGORITHM;

  public Object getObject() throws Exception {
    return this.algorithm;

  public Class getObjectType() {
    return MessageDigest.class;

  public boolean isSingleton() {
    return true;

  public void setAlgorithm(String algorithm) {
    this.algorithm = algorithm;

  public void afterPropertiesSet() throws Exception {
    this.algorithm += " after setting";
  Download: 2,599 k)

28.6.Xml Bean Factory
28.6.1.Xml Bean Factory Demo
28.6.2.Static Factory
28.6.3.Compare Beans From Factory Bean
28.6.4.Create XmlBeanFactory from ClassPathResource
28.6.5.BeanFactory Aware
28.6.6.Non Static Factory
28.6.7.Hierarchical BeanFactory Demo
28.6.8.Add BeanFactory PostProcessor To XmlBeanFactory
28.6.9.Add addBeanPostProcessor To XmlBeanFactory