1. Въведение
В този бърз урок ще научим за разликите между @Component, @Repository, @Service анотации в Spring Framework.
2. Пролетни анотации
В повечето типични приложения имаме различни слоеве като достъп до данни, презентация, услуга, бизнес и т.н.
И във всеки слой имаме различни зърна. Просто казано, за да ги открие автоматично, Spring използва анотации за сканиране на classpath .
След това регистрира всеки боб в ApplicationContext .
Ето кратък преглед на няколко от тези пояснения:
- @Component е общ стереотип за всеки управляван от Spring компонент
- @Service анотира класове на ниво услуга
- @Repository анотира класовете на персистиращия слой, който ще действа като хранилище на база данни
Вече имаме разширена статия за тези пояснения. Така че ще запазим фокуса само върху разликите между тях.
3. Какво е различното?
Основната разлика между тези стереотипи е, че те се използват за различна класификация. Когато коментираме клас за автоматично откриване, трябва да използваме съответния стереотип.
Сега, нека да ги разгледаме по-подробно.
3.1. @Съставна част
Можем да използваме @Component в приложението, за да маркираме зърната като управлявани компоненти на Spring . Spring само взима и регистрира боб с @Component и не търси @Service и @Repository като цяло.
Те са регистрирани в ApplicationContext, защото самите те са коментирани с @Component :
@Component public @interface Service { }
@Component public @interface Repository { }
@Service и @Repository са специални случаи на @Component . Те са технически еднакви, но ние ги използваме за различните цели.
3.2. @ Хранилище
Работата на @Repository е да улавя изключения, специфични за устойчивостта, и да ги възстановява като едно от унифицираните непроверени изключения на Spring .
За тази пролет предоставя PersistenceExceptionTranslationPostProcessor , който изисква да добавим в контекста на нашето приложение:
Този процесор за добавяне на боб добавя съветник към всеки боб, който е коментиран с @Repository.
3.3. @Обслужване
Маркираме боб с @Service, за да покажем, че той държи бизнес логиката . Така че няма друга специалност, освен да се използва в сервизния слой.
4. Заключение
В това описание научихме за разликите между @Component, @Repository, @Service анотации . Разгледахме всяка анотация поотделно с областите на тяхното използване.
В заключение винаги е добра идея да изберете анотацията въз основа на техните конвенции за слоеве.