Spring: различия между версиями

Материал из Home Wiki
Перейти к навигации Перейти к поиску
 
(не показано 18 промежуточных версий этого же участника)
Строка 1: Строка 1:
[[:Категория:Работа]]
= Общие =
= Общие =
== Модули ==
== Модули ==
Строка 9: Строка 11:
# Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi).
# Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi).
# Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов.
# Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов.
# Фреймворк аспектно-ориентированного программирования: работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на Java без потерь.
=== Что я не использовал ===
=== Что я не использовал ===
# Фреймворк аспектно-ориентированного программирования: работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на 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 ==
 
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
 
=== Securing methods with annotations ===
 
@Secured
@EnableGlobalMethodSecurity(jsr250Enabled=true)
 
@RolesAllowed
 
=== Using expressions for method-level security ===
{| class="wikitable" border="1"
|-
! Аннотация
! Описание
|-
| @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 ===
 
<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

Категория:Работа

Общие

Модули

Что я использовал

  1. Inversion of Control-контейнер: конфигурирование компонентов приложений и управление жизненным циклом Java-объектов.
  2. Фреймворк доступа к данным: работает с системами управления реляционными базами данных на Java-платформе, используя JDBC- и ORM-средства и обеспечивая решения задач, которые повторяются в большом числе Java-based environments.
  3. Фреймворк управления транзакциями: координация различных API управления транзакциями и инструментарий настраиваемого управления транзакциями для объектов Java.
  4. Фреймворк MVC: каркас, основанный на HTTP и сервлетах, предоставляющий множество возможностей для расширения и настройки (customization).
  5. Фреймворк удалённого доступа: конфигурируемая передача Java-объектов через сеть в стиле RPC, поддерживающая RMI, CORBA,HTTP-based протоколы, включая web-сервисы (SOAP).
  6. Фреймворк аутентификации и авторизации: конфигурируемый инструментарий процессов аутентификации и авторизации, поддерживающий много популярных и ставших индустриальными стандартами протоколов, инструментов, практик через дочерний проект Spring Security (ранее известный как Acegi).
  7. Тестирование: каркас, поддерживающий классы для написания модульных и интеграционных тестов.
  8. Фреймворк аспектно-ориентированного программирования: работает с функциональностью, которая не может быть реализована возможностями объектно-ориентированного программирования на Java без потерь.

Что я не использовал

  1. Фреймворк удалённого управления: конфигурируемое представление и управление Java-объектами для локальной или удалённой конфигурации с помощью JMX.
  2. Фреймворк работы с сообщениями: конфигурируемая регистрация объектов-слушателей сообщений для прозрачной обработки сообщений из очереди сообщений с помощью 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

[1]

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

Получение ссылки на текущий бин внутри

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