# Spring Annotations Example

This example demonstrates how to use spring and spring annotations, which requires spring >= 2.5. Included is an example that shows how to use spring-aop with jersey - use spring-aop as you're used to it with your spring bean (spring managed resource class).

There's also an example resource (`JerseyAutowiredResource`) that shows how to use annotation based autowiring with spring < 2.5 (via the `@Autowire` annotation provided by jersey-spring).

## Contents

The example consists of four resource classes:

`com.sun.jersey.samples.springannotations.resources.SpringResourcedResource`
  A resource class that demonstrates the usage of the @Resource annotation provided/supported since spring-2.5+.
`com.sun.jersey.samples.springannotations.resources.SpringAutowiredResource`
  A resource class that demonstrates the usage of the @Autowired annotation provided by spring-2.5+.
`com.sun.jersey.samples.springannotations.resources.aop.SpringAopResource`
  A resource class that demonstrates the usage of spring-aop. The resource method (of the spring managed resource class) is annotated with a custom `@Secure` annotation. A `SecurityAdvice` is defined with a pointcut matching methods with this annotation (this dummy advice just logs to stdout). The resource class must be managed by spring so that spring-aop can come into play.
  The resource class also has a subresource locator that obtains the subresource instance from the `ResourceContext`, so that this subresource instance is also created and proxied by spring.
`com.sun.jersey.samples.springannotations.resources.jerseymanaged.JerseyAutowiredResource`
  A resource class that demonstrates the usage of the @Autowire annotation provided by jersey-spring (for users of spring < 2.5).

The mapping of the URI path space is presented in the following table:

URI path | Resource class | HTTP methods
--- | --- | ---
/spring-resourced | SpringResourcedResource | GET
/spring-autowired | SpringAutowiredResource | GET
/spring-aop | SpringAopResource | GET
/spring-aop/subresource | SpringAopSubResource | GET
/jersey-autowired | JerseyAutowiredResource | GET

## Running the Example

If you are working with Jersey GlassFish update center module installed into your existing GlassFish instance, you will need to follow instructions at the module README file in order to deploy the example.

Otherwise, you can run the example using embedded GlassFish as follows:

run

> `mvn clean package embedded-glassfish:run`

or you can run the example using Jetty as follows:

> `mvn clean package jetty:run`

From a web browser, visit:

> `http://localhost:8080/spring/spring-resourced`
> `http://localhost:8080/spring/spring-autowired`
> `http://localhost:8080/spring/spring-aop`
> `http://localhost:8080/spring/spring-aop/subresource`
> `http://localhost:8080/spring/jersey-autowired`