fiftyfive.wicket.spring.FoundationSpringApplication.java Source code

Java tutorial

Introduction

Here is the source code for fiftyfive.wicket.spring.FoundationSpringApplication.java

Source

/**
 * Copyright 2012 55 Minutes (http://www.55minutes.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package fiftyfive.wicket.spring;

import fiftyfive.wicket.FoundationApplication;
import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

/**
 * An extension of {@link FoundationApplication} that additionally enables
 * SpringBean annotation support.
 *
 * @see SpringComponentInjector
 */
public abstract class FoundationSpringApplication extends FoundationApplication {
    /**
     * Delegates to {@link #initSpring} after calling super.
     */
    @Override
    protected void init() {
        super.init();
        initSpring();
    }

    /**
     * Initializes the {@link SpringComponentInjector}. This allows you to use
     * SpringBean annotations in your Wicket pages and components, which is
     * the easiest way to integrate Wicket and Spring.
     *
     * @see <a href="http://cwiki.apache.org/WICKET/spring.html#Spring-AnnotationbasedApproach">http://cwiki.apache.org/WICKET/spring.html#Spring-AnnotationbasedApproach</a>
     */
    protected void initSpring() {
        getComponentInstantiationListeners().add(new SpringComponentInjector(this, getApplicationContext(), true));
    }

    /**
     * Override this method to change how the Spring context is located,
     * for example during unit tests. The default implementation simply
     * locates the Spring context by calling
     * {@link WebApplicationContextUtils#getRequiredWebApplicationContext}.
     */
    protected ApplicationContext getApplicationContext() {
        return WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
    }
}