Внедрение значений свойств из файла свойств или XML-файла в Java-аннотацию PreAuthorize (…) (Unresolved)
Я задал этот вопрос в моем предыдущем посте здесь:SpEL для весенней безопасности: передача значений из XML в конфигурацию SpEL на основе Java, Но это еще не решено. Я хочу ввести значения либо из конфигурации XML или из внешнего файла в@PreAuthorize(...)
аннотаций. Это не так просто, как инъекция с помощью@Value
аннотаций.
Чтобы вспомнить вопрос, приведу следующую информацию.
У меня есть следующий файл конфигурации xml (example.xml), который имеет свойства и инициализирует его соответствующие значения.
<beans>
<bean id="userBean" class="x.y.User">
<property name="name" value="A"/>
<property name="userId" value="33"/>
<bean id="customerBean" class="x.y.Customer">
<property name="name" value="B"/>
<property name="customerId" value="33"/>
</bean>
</beans>
У меня есть следующий файл внешних свойств (example.properties) в папке / WEB-INF. Этот файл является альтернативой для файла конфигурации XML, упомянутого выше.
user.id = 33
customer.id =33
У меня есть конфигурация владельца политики свойств в моем файле applicationContext.xml
<context:property-placeholder location="/WEB-INF/*.properties" ignore-unresolvable="true" />
<bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/example.properties" p:ignoreUnresolvablePlaceholders="true" />
У меня есть два модельных класса:User
а такжеCustomer
public class User {
private int userId;
public int getUserId() {
return userId;
}
}
public class Customer {
private int customerId;
public int getCustomerId(){
return customerId;
}
}
У меня есть другой класс обслуживания / контроллера, который я хочу ограничить'edit'
метод с помощью@PreAuthorize
аннотаций.
The restriction
: Метод разрешен (разрешен к исполнению) тогда и только тогда, когда'userId'
а также'customerId'
оцениваются равными!
Чтобы добиться ограничения, я хочу рассмотреть два способа
вводя'userId'
а также'customerId'
значения из XML-файла (example.xml) в выражение 1 ниже. Выражения, которые я использовал в этом предложении, предложены Робом Уинчем (Спасибо, Роб!). Однако Spring не смог оценить выражение.
вводя'userId'
а также'customerId'
значения из файла внешних свойств (example.properties) в выражение 2 ниже. Точно так же весна не могла оценить и это выражение.
@Service("..") or @Controller
public class MyMainClass {
//Expression 1
@PreAuthorize("@userBean.userId == @customerBean.customerId")
public Boolean edit(User user, Customer custmer) {
return true;
}
//Expression 2
////I've tried other ways as well, but end up with similar exceptions
@PreAuthorize("${user.id} == ${customer.id}")
public Boolean edit(User user, Customer customer) {
return true;
}
}
Мои вопросы:
Q1. Какие правильные выражения я должен поместить в@PreAuthorize
аннотация для вставки значений из файла xml (example.xml) или из файла свойств (example.properties) в@PreAuthorize(...)
выражение, то это можно легко оценить?
Q2. Укажите меня, если я сделал ошибки, кроме выражений.
Q3. Это как вопрос в 1 000 000 долларов для меня, так как я сыт по горло, чтобы решить эту проблему !!! Поэтому, пожалуйста, помогите мне столько, сколько сможете!