我在上一篇文章中问过这个问题:Spring Security的SpEL:将值从XML传递到基于Java的SpEL配置。但这还没有解决。我想将xml配置或外部文件中的值注入@PreAuthorize(…)
注释。它不像使用
@Value
注释进行注入那样容易。
为了回顾这个问题,我提供了以下信息。
>
<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>
我在/WEB-INF文件夹中有以下外部属性文件(example.properties)。该文件是上述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;
}
}
我有另一个服务/控制器类,我想通过使用
@PreAuthorize
注释来限制'edit'
方法。
限制
:当且仅当'userId'
和'customerId'
的计算结果相等时,才允许(授权执行)该方法!。
为了达到限制,我想考虑两种方式。
>
通过将xml文件(example.xml)中的
'userId'
和'CusterId'
值注入下面的表达式1。我在这篇文章中使用的表达是由罗伯·温奇建议的(谢谢罗伯!)。然而,Spring无法评估这个表达。
通过将外部属性文件(example.properties)中的
'userId'
和'CusterId'
值注入下面的表达式2。同样,Spring也无法评估这个表达式。
@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;
}
}
我的问题是:
问题1。要将xml文件(example.xml)或属性文件(example.properties)中的值注入
@PreAuthorize(…)中,我必须在
@PreAuthorize
注释中放入哪些正确的表达式
表达式,那么它是否可以轻松计算?
问题2。如果我犯了表达以外的错误,请告诉我。
第三季度。这对我来说就像是一个价值1000000.00美元的问题,因为我已经厌倦了解决这个问题!!!。所以请尽你所能帮助我!。
如果您正在使用属性文件,并且希望在控制器类中访问它们,则必须添加
@Value("${some.userid}")
private int someId;
但为了确保测试的目的,我会设置为false,如果它不能解决属性文件,我会知道错误来自哪里...
希望能有所帮助。
我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?
问题内容: 有点卡在这里。我有一个带有3个配置文件的pom。Theese配置文件具有不同的版本名称。我要在构建特定配置文件时将该版本名称注入属性文件。 我的个人资料: 和filter.properties看起来像这样: 怎么做?我通过命令构建项目: 问题答案: 您需要做的是在POM文件的部分中添加一个新部分。 像这样: 这将在指定文件的指定文件夹()内部查找,并在遇到定义的变量时更改文件。 因此,
例如,我有一个bean类 我想设置这个属性的值。 在Xml配置中,我可以 我如何实现同样的事情,即设置属性的值使用Java注释?现在我已经读到,我们可以使用@Value注释使用一些属性文件,但它不能不使用属性文件,做的方式,我通过xml文件?或者使用属性文件是必要的? 我可以通过包含
我是Spring Security的新手。我看过很多关于如何通过外部属性文件的注释注入值的文章。我尝试了很多方法,但最终都是用java。lang.IllegalArgumentException:无法解析占位符“val.id”异常。 你能给我一些提示如何处理这个例外吗? 我的java类如下所示: 我的属性文件名为val.properties,位于WEB-INF下,其内容为val.id=xyz 我将
我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。
我在数据库中具有与数据库连接相关的属性。xml文件。我想在一个表中使用相同的值。属性文件。是否可以从中获取值。xml文件,并设置为。财产? --谢谢 使用loadFromXML时发生异常 线程“main”java中出现异常。util。InvalidPropertiesFormatException:组织。xml。萨克斯。SAXException:无效的系统标识符:http://www.hibern