When moving to Spring 2.5.x I found that it adds more stereotype annotations (on top of @Repository from 2.0): @Component, @Service and @Controller. How do you use them? Do you rely on implicit Spring support or you define custom stereotype specific functions/aspects/features? Or is it predominately for marking beans (compile time, conceptual, etc.)?
How do you use stereotype annotations in Spring 2.5.x?
9.8k views Asked by topchef At
3
There are 3 answers
2
Espen
On
The annotations isn't MVC specific anymore. See the reference documentation for more information. An example of using the @Component annotation or a specification of it is the tcServer with its monitoring support. See here for an example. This monitoring support is added with load-time AspectJ weaving.
Summarized, the annotations can be used in different settings at runtime after the Spring container is started, or at compile/load-time with AspectJ weaving.
Related Questions in JAVA
- Add image to JCheckBoxMenuItem
- How to access invisible Unordered List element with Selenium WebDriver using Java
- Inheritance in Java, apparent type vs actual type
- Java catch the ball Game
- Access objects variable & method by name
- GridBagLayout is displaying JTextField and JTextArea as short, vertical lines
- Perform a task each interval
- Compound classes stored in an array are not accessible in selenium java
- How to avoid concurrent access to a resource?
- Why does processing goes slower on implementing try catch block in java?
- Redirect inside java interceptor
- Push toolbar content below statusbar
- Animation in Java on top of JPanel
- JPA - How to query with a LIKE operator in combination with an AttributeConverter
- Java Assign a Value to an array cell
Related Questions in SPRING
- Redirect inside java interceptor
- Spring RestTemplate passing the type of the response
- spring-integration-dsl-groovy-http return null when i use httpGet method
- Custom Spring annotation for request parameters
- Spring - configure Jboss Intros for xml with java config?
- HTTP Status 404 - Not Found in Spring 3.2.7
- AndroidAnnotations how to use setBearerAuth
- android I/O error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
- Show login dialog when not authenticated yet
- Spring Data Rest supporting json and xml
- @Value annotation not resolved in a class that belongs to dependency jar
- Remove nested _embedded fields while using projections
- How to send Rest GET request that contains "#" value in url parameters?
- How to inject spring bean into Validator(hibernate)
- How to keep a variable in the URL when using Spring LocaleChangeInterceptor
Related Questions in ANNOTATIONS
- @Value annotation not resolved in a class that belongs to dependency jar
- How to use annotorious with angular
- Annotator dependencies: UIMA Type Capabilities?
- Symfony2 - Custom annotation loading
- What is the point of the name method in the symfony2 annotation?
- Only display annotations within visible mapview area
- Java annotation: validating primitives inside a list via an annotation
- Can't get custom annotation to work within test context using spring boot
- Technical debt on custom web rule in sonarqube 5.1
- Python - Add annotation in subplot imshow
- Make model-schema capture element addition on an array field request
- sal annotation (prefast) to enforce number of variadic args
- Changing the size of the UIImage
- getAllMembers from Elements does not return Parent's member annotations
- Pluggable Annotations Java 6 new feature
Related Questions in ASPECTS
- Can I get WebApi to work with IoC Aspects/Interceptor
- What are the drawbacks of the Facade design pattern?
- Help create AspectJ equivellent to @PrePersist and @PreUpdate for audit use case
- JPA and database Flex fields
- Using aspect.around, but checking for methods calling each other
- Is there a data binder using aspects and annotations?
- PostSharp & Critical Code Parts
- Is AspectF (a Fluent Aspect Framework) an AOP-like design that can be used without much concern?
- Polymorphism in AspectJ
- How do you globally modify page output sent from IIS without modifying the page source?
- Any PostSharp alternative?
- Why is this Spring Aspect not printing as it should with method parameter?
- Can I enable/disable aspects from an external application?
- AspectJ Handling of Multiple Matching Advices
- How to implement aspects without using Springs as well as annotations?
Related Questions in STEREOTYPE
- What can be put in an EJB stereotype?
- Acceleo: using custom UML Profile as metamodal, and its stereotypes in templates?
- changing cism: Stereotype rdf:resource when exporting RDFS File
- UML Stereotypes applied to Class Inheritance design pattern
- what is uml stereotype and how to use it
- Does spring have @Stereotype annotation?
- How to play music in left speaker and microphone voice in right speaker with raspberry pi python?
- Modelio : default stereotypes are unavailable
- What's the difference between declaring a controller with the Spring Controller stereotype versus as a subclass of the AbstractController?
- Should I create multiple services (using the Spring `@Service` stereotype) to do database lookups for different controllers?
- How to apply a stereotype from UML Standard Profile inside QVTo transformation?
- How to identify class stereotypes for use case scenario?
- How to get a IStereotype reference in a T4 Template?
- How do you use stereotype annotations in Spring 2.5.x?
- Change Stereotypes of multiple Packages selected in Project Browser at once - Enterprise Architect
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The following stereotype annotations in 2.5 can be used in a Spring MVC application as an alternative to wiring the beans in XML:
@Repository - for DAO beans - allows you to throw DataAccessException when the data source is not available.
@Service - for business beans - are fairly simple beans that have some default retention policies set up.
@Controller - for servlets - allows you to set up page request mappings, etc.
In addition, a generic fourth annotation has been introduced: @Component. All of the MVC annotations are specialisations of this one, and you can even use @Component on it's own, though by doing this in Spring MVC, you will not make use of any future optimisations/functionality added to the higher-level annotations. You can also extend @Component to create your own custom stereotypes.
Here is a quick example of the MVC annotations in action... First, the data access object:
The service:
And finally, the controller:
I found this article very good for giving a broad overview of the stereotype annotations, in addition to the official documentation.