Java/Spring/FactoryBean

Материал из Java эксперт
Перейти к: навигация, поиск

Compare Beans From FactoryBean

   <source lang="java">
      

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) 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";
 }

}


      </source>
   
  
 
  



Spring FactoryBean Demo

   <source lang="java">

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";
 }

}


      </source>