Spring FactoryBean Demo
File: context.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="sha" class="MessageDigestFactoryBean"> <property name="algorithm" value="SHA1"/> </bean> <bean id="md5" class="MessageDigestFactoryBean"/> </beans> File: Main.java import java.security.MessageDigest; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main { public static void main(String[] args) { XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("context.xml")); String d1 = (String) factory.getBean("sha"); String d2 = (String) factory.getBean("md5"); System.out.println(d1); System.out.println(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"; } }