<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSpring%2FIoC_Factory_Beans</id>
		<title>Java/Spring/IoC Factory Beans - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSpring%2FIoC_Factory_Beans"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/IoC_Factory_Beans&amp;action=history"/>
		<updated>2026-04-19T08:37:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Spring/IoC_Factory_Beans&amp;diff=6531&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/IoC_Factory_Beans&amp;diff=6531&amp;oldid=prev"/>
				<updated>2010-06-01T06:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:16, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Spring/IoC_Factory_Beans&amp;diff=6530&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/IoC_Factory_Beans&amp;diff=6530&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Accessing Factory Beans ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
//spring.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;messageDigest&amp;quot; class=&amp;quot;MessageDigestFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;algorithmName&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;SHA1&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
//////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import org.springframework.beans.factory.FactoryBean;&lt;br /&gt;
import org.springframework.beans.factory.InitializingBean;&lt;br /&gt;
public class MessageDigestFactoryBean implements FactoryBean, InitializingBean {&lt;br /&gt;
    private String algorithmName = &amp;quot;MD5&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    private MessageDigest messageDigest = null;&lt;br /&gt;
    public Object getObject() throws Exception {&lt;br /&gt;
       return messageDigest;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public Class getObjectType() {&lt;br /&gt;
       return MessageDigest.class;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public boolean isSingleton() {&lt;br /&gt;
       return true;&lt;br /&gt;
    }&lt;br /&gt;
    public void afterPropertiesSet() throws Exception {&lt;br /&gt;
        messageDigest = MessageDigest.getInstance(algorithmName);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void setAlgorithmName(String algorithmName) {&lt;br /&gt;
        this.algorithmName = algorithmName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class AccessingFactoryBeans {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory factory = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/spring.xml&amp;quot;));&lt;br /&gt;
        MessageDigest digest = (MessageDigest) factory&lt;br /&gt;
                .getBean(&amp;quot;messageDigest&amp;quot;);&lt;br /&gt;
       &lt;br /&gt;
        &lt;br /&gt;
        MessageDigestFactoryBean factoryBean = (MessageDigestFactoryBean) factory&lt;br /&gt;
                .getBean(&amp;quot;&amp;amp;messageDigest&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Editor Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File:custom.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean name=&amp;quot;customEditorConfigurer&amp;quot; class=&amp;quot;org.springframework.beans.factory.config.CustomEditorConfigurer&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;customEditors&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;map&amp;gt;&lt;br /&gt;
                &amp;lt;entry key=&amp;quot;java.util.regex.Pattern&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;bean class=&amp;quot;PatternPropertyEditor&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;exampleBean&amp;quot; class=&amp;quot;CustomEditorExample&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;searchPattern&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;(dog|fox)&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;textToSearch&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;The quick brown fox jumped over the lazy dog.&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import java.beans.PropertyEditorSupport;&lt;br /&gt;
import java.util.regex.Pattern;&lt;br /&gt;
public class PatternPropertyEditor extends PropertyEditorSupport {&lt;br /&gt;
    public void setAsText(String text) throws IllegalArgumentException {&lt;br /&gt;
        Pattern pattern = Pattern.rupile(text);&lt;br /&gt;
        setValue(pattern);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import java.util.regex.Matcher;&lt;br /&gt;
import java.util.regex.Pattern;&lt;br /&gt;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.config.CustomEditorConfigurer;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class CustomEditorExample {&lt;br /&gt;
    private Pattern searchPattern;&lt;br /&gt;
    private String textToSearch;&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        ConfigurableListableBeanFactory factory = new XmlBeanFactory(&lt;br /&gt;
                new FileSystemResource(&amp;quot;build/custom.xml&amp;quot;));&lt;br /&gt;
        CustomEditorConfigurer config = (CustomEditorConfigurer) factory&lt;br /&gt;
                .getBean(&amp;quot;customEditorConfigurer&amp;quot;);&lt;br /&gt;
        config.postProcessBeanFactory(factory);&lt;br /&gt;
        CustomEditorExample bean = (CustomEditorExample) factory&lt;br /&gt;
                .getBean(&amp;quot;exampleBean&amp;quot;);&lt;br /&gt;
        System.out.println(bean.getMatchCount());&lt;br /&gt;
    }&lt;br /&gt;
    public void setSearchPattern(Pattern searchPattern) {&lt;br /&gt;
        this.searchPattern = searchPattern;&lt;br /&gt;
    }&lt;br /&gt;
    public void setTextToSearch(String textToSearch) {&lt;br /&gt;
        this.textToSearch = textToSearch;&lt;br /&gt;
    }&lt;br /&gt;
    public int getMatchCount() {&lt;br /&gt;
        Matcher m = searchPattern.matcher(textToSearch);&lt;br /&gt;
        int count = 0;&lt;br /&gt;
        while (m.find()) {&lt;br /&gt;
            count++;&lt;br /&gt;
        }&lt;br /&gt;
        return count;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Bean Factory Usage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: beans.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;!-- hierarchical bean factories --&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;target1&amp;quot; class=&amp;quot;SimpleTarget&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;val&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ref bean=&amp;quot;injectBeanParent&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;bean id=&amp;quot;target2&amp;quot; class=&amp;quot;SimpleTarget&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;val&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ref local=&amp;quot;injectBean&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;bean id=&amp;quot;target3&amp;quot; class=&amp;quot;SimpleTarget&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;val&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ref parent=&amp;quot;injectBean&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;bean id=&amp;quot;injectBean&amp;quot; class=&amp;quot;java.lang.String&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;
               &amp;lt;value&amp;gt;Bean In Child&amp;lt;/value&amp;gt;&lt;br /&gt;
           &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: parent.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;injectBean&amp;quot; class=&amp;quot;java.lang.String&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;
               &amp;lt;value&amp;gt;Bean In Parent&amp;lt;/value&amp;gt;&lt;br /&gt;
           &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;injectBeanParent&amp;quot; class=&amp;quot;java.lang.String&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;constructor-arg&amp;gt;&lt;br /&gt;
               &amp;lt;value&amp;gt;Bean In Parent&amp;lt;/value&amp;gt;&lt;br /&gt;
           &amp;lt;/constructor-arg&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
public class SimpleTarget {&lt;br /&gt;
    private String val;&lt;br /&gt;
    &lt;br /&gt;
    public void setVal(String val) {&lt;br /&gt;
        this.val = val;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String getVal() {&lt;br /&gt;
        return val;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class HierarchicalBeanFactoryUsage {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory parent = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/parent.xml&amp;quot;));&lt;br /&gt;
        BeanFactory child = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/beans.xml&amp;quot;), parent);&lt;br /&gt;
        SimpleTarget target1 = (SimpleTarget) child.getBean(&amp;quot;target1&amp;quot;);&lt;br /&gt;
        SimpleTarget target2 = (SimpleTarget) child.getBean(&amp;quot;target2&amp;quot;);&lt;br /&gt;
        SimpleTarget target3 = (SimpleTarget) child.getBean(&amp;quot;target3&amp;quot;);&lt;br /&gt;
        System.out.println(target1.getVal());&lt;br /&gt;
        System.out.println(target2.getVal());&lt;br /&gt;
        System.out.println(target3.getVal());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging Bean Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: logging.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;loggingBean&amp;quot; class=&amp;quot;LoggingBean&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import org.apache.rumons.logging.Log;&lt;br /&gt;
import org.apache.rumons.logging.LogFactory;&lt;br /&gt;
import org.springframework.beans.factory.BeanNameAware;&lt;br /&gt;
public class LoggingBean implements BeanNameAware {&lt;br /&gt;
    private static final Log log = LogFactory.getLog(LoggingBean.class);&lt;br /&gt;
    &lt;br /&gt;
    private String beanName = null;&lt;br /&gt;
    public void setBeanName(String beanName) {&lt;br /&gt;
        this.beanName = beanName;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void someOperation() {&lt;br /&gt;
        if(log.isInfoEnabled()) {&lt;br /&gt;
            log.info(&amp;quot;Bean [&amp;quot; + beanName + &amp;quot;] - someOperation()&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class LoggingBeanExample {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory factory = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/logging.xml&amp;quot;));&lt;br /&gt;
        &lt;br /&gt;
        LoggingBean bean = (LoggingBean)factory.getBean(&amp;quot;loggingBean&amp;quot;);&lt;br /&gt;
        bean.someOperation();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Message Digest Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: factory.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;shaDigest&amp;quot; class=&amp;quot;MessageDigestFactoryBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;algorithmName&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;SHA1&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;defaultDigest&amp;quot; class=&amp;quot;MessageDigestFactoryBean&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;digester&amp;quot; class=&amp;quot;MessageDigester&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;digest1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ref local=&amp;quot;shaDigest&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;digest2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ref local=&amp;quot;defaultDigest&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import sun.misc.BASE64Encoder;&lt;br /&gt;
public class MessageDigester {&lt;br /&gt;
    private MessageDigest digest1 = null;&lt;br /&gt;
    private MessageDigest digest2 = null;&lt;br /&gt;
    &lt;br /&gt;
    public void setDigest1(MessageDigest digest1) {&lt;br /&gt;
        this.digest1 = digest1;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void setDigest2(MessageDigest digest2) {&lt;br /&gt;
        this.digest2 = digest2;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void digest(String msg) {&lt;br /&gt;
        System.out.println(&amp;quot;Using digest1&amp;quot;);&lt;br /&gt;
        digest(msg, digest1);&lt;br /&gt;
        System.out.println(&amp;quot;Using digest2&amp;quot;);&lt;br /&gt;
        digest(msg, digest2);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private void digest(String msg, MessageDigest digest) {&lt;br /&gt;
        System.out.println(&amp;quot;Using alogrithm: &amp;quot; + digest.getAlgorithm());&lt;br /&gt;
        digest.reset();&lt;br /&gt;
        byte[] bytes = msg.getBytes();&lt;br /&gt;
        byte[] out = digest.digest(bytes);&lt;br /&gt;
        BASE64Encoder enc = new BASE64Encoder();&lt;br /&gt;
        System.out.println(enc.encode(out));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
import java.security.MessageDigest;&lt;br /&gt;
import org.springframework.beans.factory.FactoryBean;&lt;br /&gt;
import org.springframework.beans.factory.InitializingBean;&lt;br /&gt;
public class MessageDigestFactoryBean implements FactoryBean, InitializingBean {&lt;br /&gt;
    private String algorithmName = &amp;quot;MD5&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    private MessageDigest messageDigest = null;&lt;br /&gt;
    public Object getObject() throws Exception {&lt;br /&gt;
       return messageDigest;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public Class getObjectType() {&lt;br /&gt;
       return MessageDigest.class;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public boolean isSingleton() {&lt;br /&gt;
       return true;&lt;br /&gt;
    }&lt;br /&gt;
    public void afterPropertiesSet() throws Exception {&lt;br /&gt;
        messageDigest = MessageDigest.getInstance(algorithmName);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void setAlgorithmName(String algorithmName) {&lt;br /&gt;
        this.algorithmName = algorithmName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class MessageDigestExample {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory factory = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/factory.xml&amp;quot;));&lt;br /&gt;
        MessageDigester digester = (MessageDigester) factory&lt;br /&gt;
                .getBean(&amp;quot;digester&amp;quot;);&lt;br /&gt;
        digester.digest(&amp;quot;Hello World!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Method Replacement Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: replacement.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;methodReplacer&amp;quot; class=&amp;quot;FormatMessageReplacer&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;replacementTarget&amp;quot; class=&amp;quot;ReplacementTarget&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;replaced-method name=&amp;quot;formatMessage&amp;quot; replacer=&amp;quot;methodReplacer&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;arg-type&amp;gt;String&amp;lt;/arg-type&amp;gt;&lt;br /&gt;
        &amp;lt;/replaced-method&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;standardTarget&amp;quot; class=&amp;quot;ReplacementTarget&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
public class ReplacementTarget {&lt;br /&gt;
    public String formatMessage(String msg) {&lt;br /&gt;
        return &amp;quot;&amp;lt;h1&amp;gt;&amp;quot; + msg + &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public String formatMessage(Object msg) {&lt;br /&gt;
        return &amp;quot;&amp;lt;h1&amp;gt;&amp;quot; + msg + &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public void foo() {&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import java.lang.reflect.Method;&lt;br /&gt;
import org.springframework.beans.factory.support.MethodReplacer;&lt;br /&gt;
public class FormatMessageReplacer implements MethodReplacer {&lt;br /&gt;
    public Object reimplement(Object target, Method method, Object[] args)&lt;br /&gt;
            throws Throwable {&lt;br /&gt;
        if (isFormatMessageMethod(method)) {&lt;br /&gt;
            String msg = (String) args[0];&lt;br /&gt;
            return &amp;quot;&amp;lt;h2&amp;gt;&amp;quot; + msg + &amp;quot;&amp;lt;/h2&amp;gt;&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            throw new IllegalArgumentException(&amp;quot;Unable to reimplement method &amp;quot;&lt;br /&gt;
                    + method.getName());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private boolean isFormatMessageMethod(Method method) {&lt;br /&gt;
        // check correct number of params&lt;br /&gt;
        if (method.getParameterTypes().length != 1) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        // check method name&lt;br /&gt;
        if (!(&amp;quot;formatMessage&amp;quot;.equals(method.getName()))) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        // check return type&lt;br /&gt;
        if (method.getReturnType() != String.class) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        // check parameter type is correct&lt;br /&gt;
        if (method.getParameterTypes()[0] != String.class) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
import org.springframework.util.StopWatch;&lt;br /&gt;
public class MethodReplacementExample {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory factory = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/replacement.xml&amp;quot;));&lt;br /&gt;
        ReplacementTarget replacementTarget = (ReplacementTarget) factory&lt;br /&gt;
                .getBean(&amp;quot;replacementTarget&amp;quot;);&lt;br /&gt;
        ReplacementTarget standardTarget = (ReplacementTarget) factory&lt;br /&gt;
                .getBean(&amp;quot;standardTarget&amp;quot;);&lt;br /&gt;
        displayInfo(replacementTarget);&lt;br /&gt;
        displayInfo(standardTarget);&lt;br /&gt;
    }&lt;br /&gt;
    private static void displayInfo(ReplacementTarget target) {&lt;br /&gt;
        System.out.println(target.formatMessage(&amp;quot;Hello World!&amp;quot;));&lt;br /&gt;
        StopWatch stopWatch = new StopWatch();&lt;br /&gt;
        stopWatch.start(&amp;quot;perfTest&amp;quot;);&lt;br /&gt;
        for (int x = 0; x &amp;lt; 1000000; x++) {&lt;br /&gt;
            String out = target.formatMessage(&amp;quot;foo&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        stopWatch.stop();&lt;br /&gt;
        System.out.println(&amp;quot;1000000 invocations took: &amp;quot;&lt;br /&gt;
                + stopWatch.getTotalTimeMillis() + &amp;quot; ms&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Property Editor Bean ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Pro Spring&lt;br /&gt;
By Rob Harrop&lt;br /&gt;
Jan Machacek&lt;br /&gt;
ISBN: 1-59059-461-4&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//File: builtin.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;builtInSample&amp;quot; class=&amp;quot;PropertyEditorBean&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;class&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;java.lang.String&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;file&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;c:/test.txt&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;locale&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt; en-GB &amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;url&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;http://www.springframework.org&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;properties&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt; &lt;br /&gt;
                name=foo &lt;br /&gt;
                age=19 &lt;br /&gt;
            &amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;strings&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;rob,jan,rod,jurgen,alef&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;bytes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;value&amp;gt;Hello World&amp;lt;/value&amp;gt;&lt;br /&gt;
        &amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import java.util.Locale;&lt;br /&gt;
import java.util.Properties;&lt;br /&gt;
import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.xml.XmlBeanFactory;&lt;br /&gt;
import org.springframework.core.io.FileSystemResource;&lt;br /&gt;
public class PropertyEditorBean {&lt;br /&gt;
    private Class cls;&lt;br /&gt;
    private File file;&lt;br /&gt;
    private URL url;&lt;br /&gt;
    private Locale locale;&lt;br /&gt;
    private Properties properties;&lt;br /&gt;
    private String[] strings;&lt;br /&gt;
    private byte[] bytes;&lt;br /&gt;
    public void setClass(Class cls) {&lt;br /&gt;
        System.out.println(&amp;quot;Setting class: &amp;quot; + cls.getName());&lt;br /&gt;
        this.cls = cls;&lt;br /&gt;
    }&lt;br /&gt;
    public void setFile(File file) {&lt;br /&gt;
        System.out.println(&amp;quot;Setting file: &amp;quot; + file.getName());&lt;br /&gt;
        this.file = file;&lt;br /&gt;
    }&lt;br /&gt;
    public void setLocale(Locale locale) {&lt;br /&gt;
        System.out.println(&amp;quot;Setting locale: &amp;quot; + locale.getDisplayName());&lt;br /&gt;
        this.locale = locale;&lt;br /&gt;
    }&lt;br /&gt;
    public void setProperties(Properties properties) {&lt;br /&gt;
        System.out.println(&amp;quot;Loaded &amp;quot; + properties.size() + &amp;quot; properties&amp;quot;);&lt;br /&gt;
        this.properties = properties;&lt;br /&gt;
    }&lt;br /&gt;
    public void setStrings(String[] strings) {&lt;br /&gt;
        System.out.println(&amp;quot;Loaded &amp;quot; + strings.length + &amp;quot; Strings&amp;quot;);&lt;br /&gt;
        this.strings = strings;&lt;br /&gt;
    }&lt;br /&gt;
    public void setUrl(URL url) {&lt;br /&gt;
        System.out.println(&amp;quot;Setting URL: &amp;quot; + url.toExternalForm());&lt;br /&gt;
        this.url = url;&lt;br /&gt;
    }&lt;br /&gt;
    public void setBytes(byte[] bytes) {&lt;br /&gt;
        System.out.println(&amp;quot;Adding &amp;quot; + bytes.length + &amp;quot; bytes&amp;quot;);&lt;br /&gt;
        this.bytes = bytes;&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        BeanFactory factory = new XmlBeanFactory(new FileSystemResource(&lt;br /&gt;
                &amp;quot;build/builtin.xml&amp;quot;));&lt;br /&gt;
        PropertyEditorBean bean = (PropertyEditorBean) factory&lt;br /&gt;
                .getBean(&amp;quot;builtInSample&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>