У меня есть некоторые финансовые данные, собранные в списке[ (Int, Double )], вот так:
val snp = List((2001, -13.0), (2002, -23.4))
С помощью этого я написал формулу, которая преобразует список с помощью карты в другой список (для демонстрации страхования жизни инвестиционного уровня ), где убытки ниже 0 преобразуются в 0, а прибыль выше 15 преобразуются в 15, вот так:
case class EiulLimits(lower:Double, upper:Double)
def eiul(xs: Seq[(Int, Double)], limits:EiulLimits): Seq[(Int, Double)] = {
xs.map(item => (item._1,
if (item._2 < limits.lower) limits.lower
else if (item._2 > limits.upper) limits.upper
else item._2
}
Можно ли как-то извлечь значения кортежа внутри этого, чтобы мне не приходилось использовать неуклюжие обозначения _1 и _2?
-121 ---1811857 -У меня есть набор @Service
bean-компонентов, которые наследуют основные функции абстрактного класса. Я пометил каждую конкретную услугу подкласса -с помощью @Service
и @Transactional
. Абстрактный суперкласс содержит общедоступный метод точки входа для каждой из этих служб. Другими словами, у меня есть что-то похожее на следующее:
abstract class AbstractService {
public void process() {
// Do common initialisation code here
processSpecific();
// Do common completion code here
}
abstract protected void processSpecific();
}
@Service @Transactional
public class FirstSpecificService extends AbstractService {
protected void processSpecific() {
// Do specific processing code here
}
}
@Service @Transactional
public class SecondSpecificService extends AbstractService {
protected void processSpecific() {
// Do different specific processing code here
}
}
Конкретный код в каждой конкретной службе подкласса -делает несколько вызовов уровня DAO для внесения изменений в базу данных, для которой REQUIRED
является типом распространения транзакций..
Теперь со службами, определенными, как указано выше, я обнаружил, что не было текущей транзакции ни в одном из кодов этих конкретных служб подкласса -, и каждый вызов уровня DAO создавал новую транзакцию, выполняя изменения, совершение транзакции и возврат.
Однако, если я аннотирую абстрактный супер-класс с помощью @Transactional
,затем транзакция создается должным образом, и все вызовы подпрограммы -на уровень DAO участвуют в текущей транзакции.
Итак, мой вопрос: каковы правила наследования поведения @Transactional
? Почему Spring не использует @Transactional
для конкретных служб подкласса -, которые он фактически создает? Должен ли @Transactional
быть в суперклассе -в этом случае, потому что именно там находится общедоступный метод точки входа -?