Java/Spring/Singleton

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

BeanFactory PreInstantiate Singletons Integration

   <source lang="java">
      

File: context.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

   "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <bean id="instantiationCounterClass"
     class="InstantiationCounterClass"/>

</beans>

File: Main.java import java.util.concurrent.atomic.AtomicInteger; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main {

 public static void main(String[] args) throws Exception {
   ConfigurableListableBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(
       "context.xml"));
   System.out.println(InstantiationCounterClass.getNumberOfInstantiations());
   beanFactory.preInstantiateSingletons();
   System.out.println(InstantiationCounterClass.getNumberOfInstantiations());
 }

} class InstantiationCounterClass {

 private static AtomicInteger instantiationCounter = new AtomicInteger(0);
 public static int getNumberOfInstantiations() {
   return instantiationCounter.get();
 }
 public InstantiationCounterClass() {
   instantiationCounter.incrementAndGet();
 }

}


      </source>
   
  
 
  



Prototype Singleton

   <source lang="java">

File: context.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

   "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <bean id="primeIterator"
     class="PrimeIterator" singleton="false">
     <property name="start" value="1000"/>
  </bean>

</beans>

File: Main.java import java.util.Properties; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main {

 public static void main(String[] args) throws Exception {
   BeanFactory beanFactory =
     new XmlBeanFactory(
        new ClassPathResource(
           "context.xml"
        )
     );
  PrimeIterator primeNumber1 = (PrimeIterator)beanFactory.getBean("primeIterator");
  PrimeIterator primeNumber2 = (PrimeIterator)beanFactory.getBean("primeIterator");
  System.out.println(primeNumber1.getNextPrime());
  System.out.println(primeNumber2.getNextPrime());
}

} class PrimeIterator {

 int start = -1;
  public int getNextPrime() {
      return start;
 }
 public int getStart() {
   return start;
 }
 public void setStart(int start) {
   this.start = start;
 }

}


      </source>