Таким образом, у меня получается что-то вроде следующего:
public interface MyService {
@PreAuthorize("hasPermission(T(Name).OBJ, T(Action).GET)")
MyObj getObj(String id);
}
@Service
public class MyServiceImpl implements MyService {
@Override
@Transactional
public MyObj getObj(String id){
return dao.get(id);
}
}
@Controller
public class MyController {
@Resource(name="myServiceImpl")
private MyService service;
public MyObj getObj(String id){
return service.getObj(id);
}
}
Когда вызывается метод getObj(id)
, сначала все заворачивается в транзакцию, затем проверяется авторизация. Можно ли сохранить эту конфигурацию и заставить Spring сначала проверить авторизацию, а затем создать транзакцию, если пользователь авторизован?
Я потратил много времени на поиск ответа и ничего не смог найти.