小编Tom*_*Tom的帖子

Spring @Validated在服务层

HEJ,

我想@Validated(group=Foo.class)在执行如下方法之前使用注释来验证参数:

public void doFoo(Foo @Validated(groups=Foo.class) foo){}
Run Code Online (Sandbox Code Playgroud)

当我将此方法放在我的Spring应用程序的Controller中时,@Validated执行并在Foo对象无效时抛出错误.但是,如果我在应用程序的Service层中的方法中放置相同的东西,则不执行验证,即使Foo对象无效,该方法也会运行.

你不能@Validated在服务层使用注释吗?或者我是否必须配置额外的东西以使其工作?

更新:

我在service.xml中添加了以下两个bean:

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
Run Code Online (Sandbox Code Playgroud)

并取代了@Validate@Null像这样:

public void doFoo(Foo @Null(groups=Foo.class) foo){}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常愚蠢的注释,但我想检查一下,如果我现在调用该方法并传递null,它将抛出违规异常.那为什么它执行@Null注释而不是@Validate注释?我知道一个javax.validation来自Spring,另一个来自Spring,但我不认为这与它有什么关系?

java validation spring spring-mvc

20
推荐指数
5
解决办法
3万
查看次数

DAO模式和模型对象

我查了很多关于DAO模式的信息,我明白了.但是我觉得大多数解释并不能说明整个故事,而且我的意思是你实际上在哪里使用你的DAO.例如,如果我有一个User类和一个能够为我保存和恢复用户的相应UserDAO,这是正确的方法:

  • 控制器创建User对象并将其传递给UserDAO以将其保存到数据库

  • 控制器创建User对象,并在其构造函数中,用户对象调用userDAO以将其自身保存到数据库中

  • 这是一种代码味道,你缺少一个额外的类"UserManager",控制器会要求它创建用户.UserManager负责创建用户并要求UserDAO保存它

我真的觉得第三个选项是最好的,因为控制器负责的是将请求委托给正确的模型对象.你最喜欢的方式是什么?我在这里错过了什么吗?

java oop dao design-patterns

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

dao ×1

design-patterns ×1

oop ×1

spring ×1

spring-mvc ×1

validation ×1