Tags: java

Speaking about soft references

I actually can think of one situation when one would like to maintain a soft reference to an object, but I don't like that default guideline for soft references is for cache.

The story is - if you can drop any entry (and all) of cache without negatively affecting application (and all entries will be removed by consecutive GCs) then you don't need cache.
If you applicaiton will be affected by cache eviction then you don't want GC affecting evictions, thus you don't want to use soft references.

Simple, huh ?

Spring и транзакции

Предположим, у нас есть код, который должен откатывать транзкцию в случае чего-либо.
Что меня откровенно не радует, что надо либо использовать @Transactional аннотацию с кодом вида

@Transactional
public void doSomething() {
//..... some logic
if (shit) {
throw new FuckupExceptionToForceRollback();
}
}


либо пользоваться некрасивым TransactionalTemplate и оборачивать код в TransactionCallback. Элегантного варианта нет. Или есть ?
Повесить AOP, который будет проверять результат, возвращаемый методом и в случае неудовлетворительного производить откат ?

Самое противное, что вот в спринге аоп слабенький, и если идёт вызов метода объекта уже из самого объекта, то мы видим не проксируемый метод, а оригинальный.