Spring: различия между версиями
FireWolf (обсуждение | вклад) |
FireWolf (обсуждение | вклад) |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
[[:Категория:Работа]] | |||
= Общие = | = Общие = | ||
== Модули == | == Модули == | ||
Строка 9: | Строка 11: | ||
# Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi). | # Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi). | ||
# Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов. | # Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов. | ||
# Фреймворк аспектно-ориентированного программирования: работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на Java без потерь. | |||
=== Что я не использовал === | === Что я не использовал === | ||
# Фреймворк удалённого управления: конфигурируемое представление и управление Java-объектами для локальной или удалённой конфигурации с помощью JMX. | # Фреймворк удалённого управления: конфигурируемое представление и управление Java-объектами для локальной или удалённой конфигурации с помощью JMX. | ||
# Фреймворк работы с сообщениями: конфигурируемая регистрация объектов-слушателей сообщений для прозрачной обработки сообщений из очереди сообщений с помощью JMS, улучшенная отправка сообщений по стандарту JMS API. | # Фреймворк работы с сообщениями: конфигурируемая регистрация объектов-слушателей сообщений для прозрачной обработки сообщений из очереди сообщений с помощью JMS, улучшенная отправка сообщений по стандарту JMS API. | ||
== Transactional == | |||
Если выбрасывется checked исключение, то происходит commit, а не rollback. | |||
Для выполнения rollback при checked исключении нужно его прописать в самой аннотации в аттрибуте rollbackFor. | |||
== Data / Repository == | == Data / Repository == | ||
Как сделать findByXXX, countByXXX: | Как сделать findByXXX, countByXXX: | ||
[http://docs.spring.io/spring-data/jpa/docs/1.11.3.RELEASE/reference/html/#jpa.query-methods.query-creation Формирование методов в репозитории] | |||
[https://docs.spring.io/spring-data/jpa/docs/2.0.8.RELEASE/reference/html/#jpa.query-methods.query-creation Формирование методов в репозитории 2.0.8] | |||
[http://docs.spring.io/spring-data/jpa/docs/1.11.3.RELEASE/reference/html/#jpa.query-methods.query-creation Формирование методов в репозитории 1.11.3] | |||
Как сделать limit, pageable (см. ниже про Pageable): | |||
[https://docs.spring.io/spring-data/jpa/docs/1.11.9.RELEASE/reference/html/#repositories.limit-query-result Лимит выдачи / постраничная выдача результатов] | |||
Возможно вместо лимита стоит использовать интерфейс с Pageable. | |||
JPA with Hibernate, p. 262, 11.2.1 Understanding database-level concurrency - графически описаны уровни изоляции транзакция и проблемы при выборе конкретного варианта. | |||
=== Interface based projections === | |||
[https://docs.spring.io/spring-data/jpa/docs/2.0.8.RELEASE/reference/html/#projections] | |||
== Security == | == Security == | ||
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) | |||
=== Securing methods with annotations === | === Securing methods with annotations === | ||
@Secured | @Secured | ||
@EnableGlobalMethodSecurity(jsr250Enabled=true) | |||
@RolesAllowed | @RolesAllowed | ||
Строка 42: | Строка 72: | ||
| Allows a method to be invoked, but filters input prior to entering the method | | Allows a method to be invoked, but filters input prior to entering the method | ||
|} | |} | ||
== Cloud Messaging / Kafka == | |||
В разных версиях настройка отличается, все похоже но есть свои особенности. | |||
=== Spring boot 1.5.14 / cloud stream binder kafka 1.2.1 === | |||
<syntaxhighlight> | |||
spring.cloud.stream.bindings.my-sink.group: group8 | |||
spring.cloud.stream.kafka.bindings.my-sink.consumer.configuration.autoCommitIntervalMs: 36000000 | |||
spring.kafka.consumer.groupId: group8 | |||
spring.kafka.consumer.autoCommitInterval: 36000000 | |||
</syntaxhighlight> | |||
=== Spring boot 2.0.3 / cloud stream binder kafka 2.0.0 === | |||
<syntaxhighlight> | |||
spring.cloud.stream.kafka.binder.configuration.group.id=group7 | |||
spring.cloud.stream.kafka.binder.configuration.auto.commit.interval.ms=3600000 | |||
</syntaxhighlight> | |||
= Получение ссылки на текущий бин внутри = | |||
https://docs.spring.io/spring/docs/3.2.4.RELEASE_to_4.0.0.M3/Spring%20Framework%203.2.4.RELEASE/org/springframework/aop/framework/AopContext.html | |||
[[Категория:Работа]] | |||
[[Категория:Java]] | |||
[[Категория:Spring]] |
Текущая версия на 09:23, 13 мая 2020
Общие
Модули
Что я использовал
- Inversion of Control-контейнер: конфигурирование компонентов приложений и управление жизненным циклом Java-объектов.
- Фреймворк доступа к данным: работает с системами управления реляционными базами данных на Java-платформе, используя JDBC- и ORM-средства и обеспечивая решения задач, которые повторяются в большом числе Java-based environments.
- Фреймворк управления транзакциями: координация различных API управления транзакциями и инструментарий настраиваемого управления транзакциями для объектов Java.
- Фреймворк MVC: каркас, основанный на HTTP и сервлетах, предоставляющий множество возможностей для расширения и настройки (customization).
- Фреймворк удалённого доступа: конфигурируемая передача Java-объектов через сеть в стиле RPC, поддерживающая RMI, CORBA,HTTP-based протоколы, включая web-сервисы (SOAP).
- Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi).
- Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов.
- Фреймворк аспектно-ориентированного программирования: работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на Java без потерь.
Что я не использовал
- Фреймворк удалённого управления: конфигурируемое представление и управление Java-объектами для локальной или удалённой конфигурации с помощью JMX.
- Фреймворк работы с сообщениями: конфигурируемая регистрация объектов-слушателей сообщений для прозрачной обработки сообщений из очереди сообщений с помощью JMS, улучшенная отправка сообщений по стандарту JMS API.
Transactional
Если выбрасывется checked исключение, то происходит commit, а не rollback.
Для выполнения rollback при checked исключении нужно его прописать в самой аннотации в аттрибуте rollbackFor.
Data / Repository
Как сделать findByXXX, countByXXX:
Формирование методов в репозитории 2.0.8
Формирование методов в репозитории 1.11.3
Как сделать limit, pageable (см. ниже про Pageable):
Лимит выдачи / постраничная выдача результатов
Возможно вместо лимита стоит использовать интерфейс с Pageable.
JPA with Hibernate, p. 262, 11.2.1 Understanding database-level concurrency - графически описаны уровни изоляции транзакция и проблемы при выборе конкретного варианта.
Interface based projections
Security
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
Securing methods with annotations
@Secured @EnableGlobalMethodSecurity(jsr250Enabled=true)
@RolesAllowed
Using expressions for method-level security
Аннотация | Описание |
---|---|
@PreAuthorize | Restricts access to a method before invocation based on the result of evaluating an expression |
@PostAuthorize | Allows a method to be invoked, but throws a security exception if the expression evaluates to false |
@PostFilter | Allows a method to be invoked, but filters the results of that method based on an expression |
@PreFilter | Allows a method to be invoked, but filters input prior to entering the method |
Cloud Messaging / Kafka
В разных версиях настройка отличается, все похоже но есть свои особенности.
Spring boot 1.5.14 / cloud stream binder kafka 1.2.1
spring.cloud.stream.bindings.my-sink.group: group8
spring.cloud.stream.kafka.bindings.my-sink.consumer.configuration.autoCommitIntervalMs: 36000000
spring.kafka.consumer.groupId: group8
spring.kafka.consumer.autoCommitInterval: 36000000
Spring boot 2.0.3 / cloud stream binder kafka 2.0.0
spring.cloud.stream.kafka.binder.configuration.group.id=group7
spring.cloud.stream.kafka.binder.configuration.auto.commit.interval.ms=3600000