Spring Security поддерживает Spring EL, поэтому в аннотациях можно писать сложные выражения:
@PreAuthorize("hasRole('PERMISSION_UPDATE_ANY_PRODUCT') or (hasRole('PERMISSION_UPDATE_OWN_PRODUCT') and #product.author==authentication.name)")
void processProduct() {
...
}