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
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in SPRING
- HTTPS configuration in Spring Boot, server returning timeout
- Multi Tenancy in Spring - Partitioned Data Approach
- How to create beans of the same class for multiple template parameters in Spring
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Springboot: How to get an entity optional property and check null?
- How do I propagate the current SecurityContext to my @RabbitListener in Spring Boot?
- Spring's XML based bean configuration for Object Mapper's Case Insensitive property
- Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. I'm using Postgresql
- springboot class org.hibernate.mapping.Bag cannot be cast to class org.hibernate.mapping.SimpleValue
- Issue while deploying JDK 17 and Spring 6 application in Tomcat 10.1.20
- Spring JPA Data Auditing - How to design it?
- Springframework test: Async not started
- Error: Cannot invoke "jakarta.servlet.http.HttpSession.getAttribute(String)" because "session" is null
- How does spring-retry determine which methods to retry when @Retryable is placed at the class level?
- problem with edge server registration in Eureka
Related Questions in ANNOTATIONS
- Is there a VB.net way to clear/remove Vertical Line annotations?
- control javac options per class from annotation processor
- Why does openshift ingress not allow router annotations?
- External annotation processor not working
- How to inherit and use swagger’s schema annotation
- Adding Annotation with PDF.js
- Remove annotation from subtree commits (--unannotate) when Git subtree becomes a standalone repository
- Missing categorical annotations in R pheatmap() despite no missing values in data
- Is there a philosophical reason why jUnit 5 uses annotations rather than classes or interfaces?
- Does the [NotifyCanExecuteChangedFor] Annotation Not Work in Combination with ObservableCollection?
- Playwright annotations expect 2 arguments but got 3
- Is there an equivalent to @BeforeAll in JMH(Java Microbenchmark Harness), Level.Trial is not working
- The value '' is not valid for
- Spring Boot: @Autowired throws 'UnsatisfiedDependencyException' while testing
- I need Visual Code Studio to Auto Suggest parameter details for my functions, Where and how I do that?
Related Questions in ASPECTS
- Postsharp: Access already applied aspects from an Aspect
- what kind of pointcut the @Transactional aspect has? Before, After or Around?
- Can I have my core logic to update object status in Aspect
- Lombok and AspectJ with Sprint boot 2
- Spring Aspect not working as it should
- When an entity has a Spring Data Repository, the LoadTimeWeaving for this entity doesnt work
- Spring aop and aspectj
- IntelliJ IDEA + AspectJ
- AspectJ java throwing weird errors
- Convert aspect to native AspectJ notation
- How to intercept method which handles its own exceptions using AspectJ
- Log message on Spring AOP Aspect start up
- Logging calls to external code with an aspect leads to exceptions
- Applying Aspects on package and supackages
- instanceof not working with aspects in Spring
Related Questions in STEREOTYPE
- changing cism: Stereotype rdf:resource when exporting RDFS File
- Initialize event handler on table Has been called Stereotype
- Does spring have @Stereotype annotation?
- Define stereotype to use on different project
- Redefine Attribute of Metaclass when extending Stereotypes
- How to pass reference using @Component and @Value stereotype?
- Is a stereotype name case sensitive?
- Change default stereotype: Upon adding a Column to a DB-Table, I would like the col stereotype to be my custom stereotpye
- OpenXava how to populate dropdown/combobox with my own values
- Does the case of a stereotype matter?
- Constraints on extended stereotype in UML profile
- what is uml stereotype and how to use it
- How to play music in left speaker and microphone voice in right speaker with raspberry pi python?
- Spring Boot layer architecture
- SpringBoot: Stereotype Annotations not working on Interface Level
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.