Is there application Scope in spring?

Shakthi :

I saw 'application' scope in the following blog. Is it true?

http://www.concretepage.com/spring/spring-bean-scope-example-using-scope-annotation-and-xml-for-singleton-prototype-request-session-global-session-and-application-scope-with-scoped-proxy

Because, as per my surfing, I got to know spring has only the below 5 scopes. Please correct me if I'm wrong.

  1. Singleton
  2. Prototype
  3. Request
  4. Session
  5. Global Session
Pau :

There is a section on the official doc which is related to the bean scopes:

Basically, they define the next:

singleton (Default) Scopes a single bean definition to a single object instance per Spring IoC container.

prototype Scopes a single bean definition to any number of object instances.

request Scopes a single bean definition to the lifecycle of a single HTTP request; that is, each HTTP request has its own instance of a bean created off the back of a single bean definition. Only valid in the context of a web-aware Spring ApplicationContext.

session Scopes a single bean definition to the lifecycle of an HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.

globalSession Scopes a single bean definition to the lifecycle of a global HTTP Session. Typically only valid when used in a Portlet context. Only valid in the context of a web-aware Spring ApplicationContext.

application Scopes a single bean definition to the lifecycle of a ServletContext. Only valid in the context of a web-aware Spring ApplicationContext.

websocket Scopes a single bean definition to the lifecycle of a WebSocket. Only valid in the context of a web-aware Spring ApplicationContext.


Furthermore, as Spring 3.0 exists other scope thread scope but is not registered by default, moreover you could even create your own scope:

As of Spring 3.0, a thread scope is available, but is not registered by default. For more information, see the documentation for SimpleThreadScope. For instructions on how to register this or any another custom scope, see the section called “Using a custom scope”.

There is a section which explains how to define your custom scope:


Respect to Application scope, they define it as next:

The Spring container creates a new instance of the AppPreferences bean by using the appPreferences bean definition once for the entire web application. That is, the appPreferences bean is scoped at the ServletContext level, stored as a regular ServletContext attribute.

It also explains the difference between a Spring singleton bean:

This is somewhat similar to a Spring singleton bean but differs in two important ways: It is a singleton per ServletContext, not per Spring 'ApplicationContext' (for which there may be several in any given web application), and it is actually exposed and therefore visible as a ServletContext attribute

So in case you are looking to use with XML:

<bean id="apps" class="com.App" scope="application"/>

Or annotation:

@ApplicationScope
@Component
public class App {
    // ...
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=439004&siteId=1