Spring MVC, два экземпляра конфигурации вместо одного

Я начинаю узнавать о Spring MVC. Я'Я пытаюсь избавиться от всей конфигурации Spring XML. Вот мой web.xml:



  
  
      contextClass
      
          org.springframework.web.context.support.AnnotationConfigWebApplicationContext
      
  

  
  
      contextConfigLocation
      pl.mbrnwsk.sklep.config.AppConfiguration
  

  
  
      org.springframework.web.context.ContextLoaderListener
  

  
  
      dispatcher
      org.springframework.web.servlet.DispatcherServlet
      
      
          contextClass
          
              org.springframework.web.context.support.AnnotationConfigWebApplicationContext
          
      
      
      
          contextConfigLocation
          pl.mbrnwsk.sklep.config.AppConfiguration
      
  

  
  
      dispatcher
      /
  

Appconfiguration.java:

@Configuration
@EnableTransactionManagement
@ComponentScan("pl.mbrnwsk.sklep")
public class AppConfiguration {

    public String hbm2ddl_auto = "update";

    public AppConfiguration(){
        System.out.println("AppConfiguration");
    }

    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setDriverClassName("org.hsqldb.jdbcDriver");
        ds.setUrl("jdbc:hsqldb:file:/SklepDB/");
        ds.setUsername("SA");
        ds.setPassword("");
        return ds;
    }

    @Bean
    public SessionFactory sessionFactory() {
        LocalSessionFactoryBuilder ss = new LocalSessionFactoryBuilder(dataSource());
        ss.scanPackages("pl.mbrnwsk.sklep.model");
        ss.setProperty("hibernate.show_sql", "true");
        ss.setProperty("hibernate.hbm2ddl.auto", hbm2ddl_auto);
        ss.setProperty("hibernate.dialect",
                "org.hibernate.dialect.HSQLDialect");
        return ss.buildSessionFactory();
    }

    @Bean
    public PlatformTransactionManager txManager(){
        return new HibernateTransactionManager(sessionFactory());   
    }
}

Экземпляр AppConfiguration создается два раза: один раз при запуске Tomcat и дважды при вводе некоторого URL-адреса, который должен обрабатываться диспетчером. Это не желаемое поведение. Я хотел бы, чтобы AppConfiguration создавалась только при запуске Tomcat. Как этого добиться? И второй вопрос, что делает слушатель?

Ответы на вопрос(2)

Ваш ответ на вопрос