The Spring environment

Each plugin runs in a distinct application context as child of a web application context.

The generated context contains an implementation of each service defined in the novomind iSHOP ishop-api project. This isolates the execution of your plugin from other plugins. It is not possible to access the ishop-api services of other plugins.

Configuration

The configurer is the (java-config-) configuration class for the application context of the plugin. It supports all the Spring features, including annotations like @Inject, @Configuration, @ComponentScan, @EnableWebMvc and @Bean.

Web servlet context

Your plugin may use the full functionality of Spring`s webmvc framework. So it is possible to register your own custom controller in your plugin, with the difference that the path specified in the RequestMapping annotation will not become the request url of the controller. The actual url is returned at runtime by the controller tag.

Example controller:

@RestController
@RequestMapping(value = "status")
public class StatusController {

@RequestMapping(value = "/")
  public Object status() {
    return "Plugin is running";
  }
}

... and how it can be accessed from inside a jsp:

<%@ taglib uri="http://www.novomind.com/ishop/api" prefix="api" %>

<api:controller var="statusUrl" resource="status/" />
Check status at: <c:out value="${statusUrl}" />