├── CONTRIBUTING.md ├── LICENSE └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please ensure your pull request adheres to the following guidelines: 4 | 5 | - Add only annotations you frequently use 6 | - Search previous PRs before making a new one 7 | - New categories and improvements are welcome 8 | - Make an individual PR for each suggestion or category 9 | - Use the following format: `[@Annotation][link] - Description` and `[link]: link to javadoc` 10 | - Check your spelling and grammar 11 | 12 | Thank you for your suggestions! 13 | 14 | 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # List of frequently used annotations in Spring Boot apps 2 | 3 | [![PRs Welcome][shield-prs]](https://github.com/gindex/spring-boot-annotation-list/blob/master/CONTRIBUTING.md) 4 | [![license][shield-license]](https://github.com/gindex/spring-boot-annotation-list/blob/master/LICENSE) 5 | 6 | 7 | This document contains non-comprehensive list of frequently used annotations in Spring Boot applications. 8 | It should rather be used as a quick lookup list, for detailed and comprehensive information please read official javadocs and documentation. 9 | 10 | 11 | ## Contents 12 | - [Core Spring](#core-spring) 13 | - [Spring Boot](#spring-boot) 14 | - [Spring Boot Tests](#spring-boot-tests) 15 | - [Spring Test](#spring-test) 16 | - [Transactions](#transactions) 17 | - [Spring JPA & Hibernate](#spring-jpa-and-hibernate) 18 | - [Spring Security](#spring-security) 19 | - [Spring AOP](#spring-aop) 20 | 21 | 22 | ## Core Spring 23 | 24 | - [@Bean][bean] - Annotated method produces a bean managed by the Spring IoC container 25 | - Stereotype annotations 26 | - [@Component][component] - Marks annotated class as a bean found by the component-scanning and loaded into the application context 27 | - [@Controller][controller] - Marks annotated class as a bean for Spring MVC containing request handler 28 | - [@RestController][rest-controller] - Marks annotated class as a `@Controller` bean and adds `@ResponseBody` to serialize returned results as messages 29 | - [@Configuration][config] - Marks annotated class as a Java configuration defining beans 30 | - [@Service][service] - Marks annotated class as a bean (as convention usually containing business logic) 31 | - [@Repository][repo] - Marks annotated class as a bean (as convention usually providing data access) and adds auto-translation from `SQLException` to `DataAccessExceptions` 32 | 33 | #### Bean state 34 | - [@PostConstruct][postconstruct] - Annotated method is executed after dependency injection is done to perform initialization 35 | - [@PreDestroy][predestroy] - Annotated method is executed before the bean is destroyed, e.g. on the shutdown 36 | 37 | #### Configuration 38 | - [@Import][import] - Imports one or more Java configuration classes `@Configuration` 39 | - [@PropertySource][propertysource] - Indicates the location of `applicaiton.properties` file to add key-value pairs to Spring `Environment` 40 | - [@Value][value] - Annotated fields and parameters values will be injected 41 | - [@ComponentScan][componentscan] - Configures component scanning `@Compenent`, `@Service`, etc. 42 | 43 | #### Bean properties 44 | - [@Lazy][lazy] - Annotated bean will be lazily initialized on the first usage 45 | - [@Profile][profile] - Indicates that beans will be only initialized if the defined profiles are active 46 | - [@Scope][scope] - Defines bean creation scope, e.g. prototype, singleton, etc. 47 | - [@DependsOn][dependson] - Explicitly defines a dependency to other beans in terms of creation order 48 | - [@Order][order] - Defines sorting order if injecting a list of beans, but it does not resolve the priority if only a single bean is expected 49 | - [@Primary][primary] - Annotated bean will be picked if multiple beans can be autowired 50 | - [@Conditional][conditional] - Annotated bean is created only if conditions are satisfied 51 | - Additionally available in Spring Boot: 52 | - [@ConditionalOnBean][conditionalonbean] 53 | - [@ConditionalOnMissingBean][conditionalonmissingbean] 54 | - [@ConditionalOnClass][conditionalonclass] 55 | - [@ConditionalOnMissingClass][conditionalonmissingclass] 56 | - [@ConditionalOnProperty][conditionalonproperty] 57 | - [@ConditionalOnMissingProperty][conditionalonmissingproperty] 58 | 59 | #### Bean injection 60 | - [@Autowired][autowired] - Beans are injected into annotated setters, fields, or constructor params. 61 | - [@Qualifier][qualifier] - Specifies the name of a bean as an additional condition to identify a unique candidate for autowiring 62 | 63 | #### Validation 64 | - [@Valid][valid] - Mark a property, method parameters or return type for validation 65 | - [@Validated][validated] - Variant of `@Valid` that allows validation of multiple groups, e.g. all fields of an annotated class 66 | - [@NotNull][notnull] - Must be not null 67 | - [@NotEmpty][notempty] - Must be not null nor empty 68 | - [@NotBlank][notblank] - Must be not null and at least one non-whitespace character 69 | - [@Digits][digits] - Must be a number within accepted range 70 | - [@Past][past] - Must be an instant, date or time in the past 71 | - [@Future][future] - Must be an instant, date or time in the future 72 | - ... 73 | 74 | 75 | ## Spring Boot 76 | 77 | - [@SpringBootConfiguration][springbootconfiguration] - Indicates Spring Boot application `@Configuration` 78 | - [@EnableAutoConfiguration][enableautoconfiguration] - Enables application context auto-configuration to provide possibly needed beans based on the classpath 79 | - [@ConfigurationProperties][configurationproperties] - Provides external binding of key value properties 80 | - [@ConstructorBinding][constructorbinding] - Bind properties by using constructor rather than setters 81 | - [@ConfigurationPropertiesScan][configurationpropertiesscan] - Enables auto-detection of `@ConfigurationProperties` classes 82 | - [@SpringBootApplication][springbootapplication] - Combination of `@SpringBootConfiguration`, `@EnableAutoConfiguration`, `@ConfigurationPropertiesScan` and `@ComponentScan` 83 | - [@EntityScan][entityscan] - Configures base packages to scan for entity classes 84 | - [@EnableJpaRepositories][enablejparepositories] - Enables auto-configuration of jpa repositories 85 | 86 | ## Spring Boot Tests 87 | 88 | - [@SpringBootTest][springboottest] - Annotated test class will load the entire application context for integration tests 89 | - [@WebMvcTest][webmvctest] - Annotated test class will load only the web layer (service and data layer are ignored) 90 | - [@DataJpaTest][datajpatest] - Annotated class will load only the JPA components 91 | - [@JsonTest][jsontest] - Annotated class will load only json mapper for serialization and deserialization tests 92 | - [@MockBean][mockbean] - Marks annotated field as a mock and loads it as a bean into the application context 93 | - [@SpyBean][spybean] - Allows partial mocking of beans 94 | - [@Mock][mock] - Defines annotated field as a mock 95 | 96 | ## Spring Test 97 | 98 | - [@ContextConfiguration][contextconfiguration] - Defines `@Configuration` to load application context for integration test 99 | - [@ExtendWith][extendwith] - Defines extensions to execute the tests with, e.g. MockitoExtension 100 | - [@SpringJUnitConfig][springjunitconfig] - Combines `@ContextConfiguration` and `@ExtendWith(SpringExtension.class)` 101 | - [@TestPropertySource][testpropertysource] - Defines the location of property files used in integration tests 102 | - [@DirtiesContext][dirtiescontext] - Indicates that annotated tests dirty the application context and will be cleaned after each test 103 | - [@ActiveProfiles][activeprofiles] - Defines which active bean definition should be loaded when initializing the test application context 104 | - [@Sql][sql] - Allows defining SQL scripts and statements to be executed before and after tests 105 | 106 | ## Transactions 107 | 108 | - [@EnableTransactionManagement][enabletransactionmanagement] - Enables annotation-driven transaction declaration `@Transactional` 109 | - [@Transactional][transactional] - Annotated methods will be executed in a transactional manner 110 | 111 | ## Spring JPA and Hibernate 112 | 113 | - [@Id][id] - Marks annotated field as a primary key of an entity 114 | - [@GeneratedValue][generatedvalue] - Provides generation strategy of primary keys 115 | - [@Entity][entity] - Marks annotated class as an entity 116 | - [@Column][column] - Provides additional configuration for a field, e.g. column name 117 | - [@Table][table] - Provides additional configuration for an entity, e.g. table name 118 | - [@PersistenceContext][persistencecontext] - `EntityManger` is injected into annotated setters and fields 119 | - [@Embedded][embedded] - Annotated field is instantiated as a value of an `Embeddable` class 120 | - [@Embeddable][embeddable] - Instances of an annotated class are stored as part of an entity 121 | - [@EmbeddedId][embeddedid] - Marks annotated property as a composite key mapped by an embeddable class 122 | - [@AttributeOverride][attributeoverride] - Overrides the default mapping of a field 123 | - [@Transient][transient] - Annotated field is not persistent 124 | - [@CreationTimestamp][creationtimestamp] - Annotated field contains the timestamp when an entity was stored for the first time 125 | - [@UpdateTimestamp][updatetimestamp] - Annotated field contains the timestamp when an entity was updated last time 126 | - [@ManyToOne][manytoone] - Indicates N:1 relationship, the entity containing annotated field has a single relation to an entity of other class, but the other class has multiple relations 127 | - [@JoinColumn][joincolumn] - Indicates a column for joining entities in `@ManyToOne` or `@OneToOne` relationships at the owning side or unidirectional `@OneToMany` 128 | - [@OneToOne][onetoone] - Indicates 1:1 relationship 129 | - [@MapsId][mapsid] - References joining columns of owning side of `@ManyToOne` or `@OneToOne` relationships to be the primary key of referencing and referenced entities 130 | - [@ManyToMany][manytomany] - Indicates N:M relationship 131 | - [@JoinTable][jointable] - Specifies an association using a join table 132 | - [@BatchSize][batchsize] - Defines size to lazy load a collection of annotated entities 133 | - [@FetchMode][fetchmode] - Defines fetching strategy for an association, e.g. loading all entities in a single subquery 134 | 135 | ## Spring Security 136 | 137 | - [@EnableWebSecurity][enablewebsecurity] - Enables web security 138 | - [@EnableGlobalMethodSecurity][enableglobalmethodsecurity] - Enables method security 139 | - [@PreAuthorize][preauthorize] - Defines access-control expression using SpEL, which is evaluated before invoking a protected method 140 | - [@PostAuthorize][postauthorize] - Defines access-control expression using SpEL, which is evaluated after invoking a protected method 141 | - [@RolesAllowed][rolesallowed] - Specifies a list of security roles allowed to invoke protected method 142 | - [@Secured][secured] - Java 5 annotation for defining method level security 143 | 144 | ## Spring AOP 145 | 146 | - [@EnableAspectJAutoProxy][enableaspectjautoproxy] - Enables support for handling components marked with `@Aspect` 147 | - [@Aspect][aspect] - Declares an annotated component as an aspect containing pointcuts and advices 148 | - [@Before][before] - Declares a pointcut executed before the call is propagated to the join point 149 | - [@AfterReturning][afterreturning] - Declares a pointcut executed if the join point successfully returns a result 150 | - [@AfterThrowing][afterthrowing] - Declares a pointcut executed if the join point throws an exception 151 | - [@After][after] - Declares a pointcut executed if the join point successfully returns a result or throws an exception 152 | - [@Around][around] - Declares a pointcut executed before the call giving control over the execution of the join point to the advice 153 | - [@Pointcut][pointcut] - Externalized definition a pointcut expression 154 | 155 | [shield-prs]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg 156 | [shield-license]: https://img.shields.io/badge/license-CC0-green 157 | 158 | [bean]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html 159 | [component]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Component.html 160 | [controller]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Controller.html 161 | [rest-controller]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html 162 | [config]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Configuration.html 163 | [service]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Service.html 164 | [repo]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Repository.html 165 | 166 | [postconstruct]: https://javaee.github.io/javaee-spec/javadocs/javax/annotation/PostConstruct.html 167 | [predestroy]: https://javaee.github.io/javaee-spec/javadocs/javax/annotation/PreDestroy.html 168 | 169 | [import]:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Import.html 170 | [propertysource]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/PropertySource.html 171 | [value]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Value.html 172 | [componentscan]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html 173 | 174 | [lazy]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Lazy.html 175 | [profile]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html 176 | [scope]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Scope.html 177 | [dependson]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/DependsOn.html 178 | [order]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html 179 | [primary]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html 180 | [conditional]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Conditional.html 181 | [conditionalonbean]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnBean.html 182 | [conditionalonmissingbean]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.html 183 | [conditionalonclass]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.html 184 | [conditionalonmissingclass]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingClass.html 185 | [conditionalonproperty]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.html 186 | [conditionalonmissingproperty]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.html 187 | 188 | [autowired]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html 189 | [qualifier]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Qualifier.html 190 | 191 | [valid]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/Valid.html 192 | [validated]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/annotation/Validated.html 193 | [notnull]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotNull.html 194 | [notempty]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotEmpty.html 195 | [notblank]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/NotBlank.html 196 | [digits]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/Digits.html 197 | [past]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/Past.html 198 | [future]: https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/Future.html 199 | 200 | 201 | [springbootconfiguration]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/SpringBootConfiguration.html 202 | [enableautoconfiguration]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/EnableAutoConfiguration.html 203 | [configurationproperties]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConfigurationProperties.html 204 | [constructorbinding]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConstructorBinding.html 205 | [configurationpropertiesscan]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConfigurationPropertiesScan.html 206 | [springbootapplication]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html 207 | [entityscan]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/domain/EntityScan.html 208 | [enablejparepositories]: https://docs.spring.io/spring-data/data-jpa/docs/current/api/org/springframework/data/jpa/repository/config/EnableJpaRepositories.html 209 | 210 | [springboottest]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/context/SpringBootTest.html 211 | [webmvctest]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTest.html 212 | [datajpatest]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTest.html 213 | [jsontest]: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.testing.spring-boot-applications.json-tests 214 | [mockbean]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/mock/mockito/MockBean.html 215 | [spybean]: https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/mock/mockito/SpyBean.html 216 | [mock]: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mock.html 217 | 218 | [contextconfiguration]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/ContextConfiguration.html 219 | [extendwith]: https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/extension/ExtendWith.html 220 | [springjunitconfig]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/junit/jupiter/SpringJUnitConfig.html 221 | [testpropertysource]: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/TestPropertySource.html 222 | [dirtiescontext]: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/annotation/DirtiesContext.html 223 | [activeprofiles]: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/ActiveProfiles.html 224 | [sql]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/jdbc/Sql.html 225 | 226 | [enabletransactionmanagement]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/EnableTransactionManagement.html 227 | [transactional]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html 228 | 229 | [id]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Id.html 230 | [generatedvalue]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/GeneratedValue.html 231 | [entity]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Entity.html 232 | [column]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Column.html 233 | [table]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Table.html 234 | [persistencecontext]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/PersistenceContext.html 235 | [embedded]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Embedded.html 236 | [embeddable]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Embeddable.html 237 | [embeddedid]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/EmbeddedId.html 238 | [attributeoverride]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/AttributeOverride.html 239 | [transient]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/Transient.html 240 | [creationtimestamp]: https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/annotations/CreationTimestamp.html 241 | [updatetimestamp]: https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/annotations/UpdateTimestamp.html 242 | [manytoone]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/ManyToOne.html 243 | [joincolumn]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/JoinColumn.html 244 | [onetoone]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/OneToOne.html 245 | [mapsid]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/MapsId.html 246 | [manytomany]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/ManyToMany.html 247 | [jointable]: https://javaee.github.io/javaee-spec/javadocs/javax/persistence/JoinTable.html 248 | [batchsize]: https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/annotations/BatchSize.html 249 | [fetchmode]: https://docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/annotations/FetchMode.html 250 | 251 | [enablewebsecurity]:https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/configuration/EnableWebSecurity.html 252 | [enableglobalmethodsecurity]: https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/method/configuration/EnableGlobalMethodSecurity.html 253 | [preauthorize]: https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/access/prepost/PreAuthorize.html 254 | [postauthorize]: https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/access/prepost/PostAuthorize.html 255 | [rolesallowed]: https://javaee.github.io/javaee-spec/javadocs/javax/annotation/security/RolesAllowed.html 256 | [secured]: https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/access/annotation/Secured.html 257 | 258 | [enableaspectjautoproxy]: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html 259 | [aspect]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/Aspect.html 260 | [before]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/Before.html 261 | [afterreturning]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/AfterReturning.html 262 | [afterthrowing]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/AfterThrowing.html 263 | [after]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/After.html 264 | [around]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/Around.html 265 | [pointcut]: https://javadoc.io/static/org.aspectj/aspectjrt/1.9.5/org/aspectj/lang/annotation/Pointcut.html 266 | 267 | --------------------------------------------------------------------------------