Java
Перечислите основные аннотации Spring
При разработке веб-приложения с использованием Spring Boot, Security и прочие инструменты от Spring встречаются большие количества аннотаций для разных целей. Из за этого начинающий может запутаться и попасть в заблуждение. Какие аннотации Spring являются важнейшими или основными при разработке веб-приложения? Пожалуйста, перечислите их.
Ну это нормально запутаться) разбирайся и будет тебе рост
@Component - Аннотация для любого компонента фреймворка.
@Service - (Сервис-слой приложения) Аннотация, объявляющая, что этот класс представляет собой сервис – компонент сервис-слоя.
Сервис является подтипом класса @Component. Использование данной аннотации позволит искать бины-сервисы автоматически.
@Repository - (Доменный слой) Аннотация показывает, что класс функционирует как репозиторий и требует наличия прозрачной трансляции исключений. Преимуществом трансляции исключений является то, что слой сервиса будет иметь дело с общей иерархией исключений от Spring (DataAccessException) вне зависимости от используемых технологий доступа к данным в слое данных.
@Controller - (Слой представления) Аннотация для маркировки java класса, как класса контроллера. Данный класс представляет собой компонент, похожий на обычный сервлет (HttpServlet) (работающий с объектами HttpServletRequest и HttpServletResponse), но с расширенными возможностями от Spring Framework.
@ResponseBody - Аннотация показывает что данный метод может возвращать кастомный объект в виде xml, json...
@RestController - Аннотация аккумулирует поведение двух аннотаций @Controller и @ResponseBody
import org.springframework.stereotype.Component;
@Component
public class UserBean {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@Transactional - Перед исполнением метода помеченного данной аннотацией начинается транзакция, после выполнения метода транзакция коммитится, при выбрасывании RuntimeException откатывается.
@Autowired - Аннотация позволяет автоматически установить значение поля.
@RequestMapping - Аннотация используется для маппинга урл-адреса запроса на указанный метод или класс. Можно указывать конкретный HTTP-метод, который будет обрабатываться (GET/POST), передавать параметры запроса.
@ModelAttribute - Аннотация, связывающая параметр метода или возвращаемое значение метода с атрибутом модели, которая будет использоваться при выводе jsp-страницы.
@PathVariable - Аннотация, которая показывает, что параметр метода должен быть связан с переменной из урл-адреса.
@Scope - Аннотация для установки области жизни бина: singleton (только один экземпляр бина создается для IoC контейнера; значение по умолчанию ), prototype (создается новый экземпляр бина когда приходит запрос на его создание), request (один экземпляр бина для каждого HTTP запроса ), session (один экземпляр бина для каждой сессии), globalSession (один экземпляр бина для каждой глобальной сессии)
@PostConstruct - Аннотация для метода, который будет вызван после вызова конструктора бина.
@PreDestroy - Аннотация для метода, который будет вызван перед уничтожением бина.
@Profile - Аннотация для создания профилей конфигурации проекта. Может применяться как к бинам так и к конфигурационным классам.
@Configuration
public class AppConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:com/bank/config/sql/schema.sql")
.addScript("classpath:com/bank/config/sql/test-data.sql")
.build();
}
@Bean
@Profile("production")
public DataSource productionDataSource() throws Exception {
Context ctx = new InitialContext();
return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
}
}
@Service - (Сервис-слой приложения) Аннотация, объявляющая, что этот класс представляет собой сервис – компонент сервис-слоя.
Сервис является подтипом класса @Component. Использование данной аннотации позволит искать бины-сервисы автоматически.
@Repository - (Доменный слой) Аннотация показывает, что класс функционирует как репозиторий и требует наличия прозрачной трансляции исключений. Преимуществом трансляции исключений является то, что слой сервиса будет иметь дело с общей иерархией исключений от Spring (DataAccessException) вне зависимости от используемых технологий доступа к данным в слое данных.
@Controller - (Слой представления) Аннотация для маркировки java класса, как класса контроллера. Данный класс представляет собой компонент, похожий на обычный сервлет (HttpServlet) (работающий с объектами HttpServletRequest и HttpServletResponse), но с расширенными возможностями от Spring Framework.
@ResponseBody - Аннотация показывает что данный метод может возвращать кастомный объект в виде xml, json...
@RestController - Аннотация аккумулирует поведение двух аннотаций @Controller и @ResponseBody
import org.springframework.stereotype.Component;
@Component
public class UserBean {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@Transactional - Перед исполнением метода помеченного данной аннотацией начинается транзакция, после выполнения метода транзакция коммитится, при выбрасывании RuntimeException откатывается.
@Autowired - Аннотация позволяет автоматически установить значение поля.
@RequestMapping - Аннотация используется для маппинга урл-адреса запроса на указанный метод или класс. Можно указывать конкретный HTTP-метод, который будет обрабатываться (GET/POST), передавать параметры запроса.
@ModelAttribute - Аннотация, связывающая параметр метода или возвращаемое значение метода с атрибутом модели, которая будет использоваться при выводе jsp-страницы.
@PathVariable - Аннотация, которая показывает, что параметр метода должен быть связан с переменной из урл-адреса.
@Scope - Аннотация для установки области жизни бина: singleton (только один экземпляр бина создается для IoC контейнера; значение по умолчанию ), prototype (создается новый экземпляр бина когда приходит запрос на его создание), request (один экземпляр бина для каждого HTTP запроса ), session (один экземпляр бина для каждой сессии), globalSession (один экземпляр бина для каждой глобальной сессии)
@PostConstruct - Аннотация для метода, который будет вызван после вызова конструктора бина.
@PreDestroy - Аннотация для метода, который будет вызван перед уничтожением бина.
@Profile - Аннотация для создания профилей конфигурации проекта. Может применяться как к бинам так и к конфигурационным классам.
@Configuration
public class AppConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.HSQL)
.addScript("classpath:com/bank/config/sql/schema.sql")
.addScript("classpath:com/bank/config/sql/test-data.sql")
.build();
}
@Bean
@Profile("production")
public DataSource productionDataSource() throws Exception {
Context ctx = new InitialContext();
return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
}
}
Didar Toresh
Привет, Википедия!
Похожие вопросы
- В чём именно мощь Spring?
- Стоит ли учить Spring если не знаю некоторые темы?
- Не могу подключить css к проекту на Spring MVC, спринг просто не видит его.
- Spring - работа с Бинами.
- Для чего в Java нужна аннотация своими словами?
- Основная задача сеттеров и геттеров это устанавливать и получать?
- перечислите основные человеческие расы и назовите признаки,по которым они различаются!!
- Перечислите основные типы данных
- Перечислить ОСНОВНЫЕ изобретения конца 19 века начала 20 века.
- Перечислите основные черты ЗРЕЛОГО индустриального общества