任何人都可以解释我需要做些什么来实现我自己的注释,这将为我的网络请求添加功能?
例如:
@Controller
public class MyController {
@RequestMapping("/abc")
@RequiresSomeSpecialHandling
public void handleSecureRequest() {
}
}
Run Code Online (Sandbox Code Playgroud)
这@RequiresSomeSpecialHandling将是我自己的注释,导致在给定的Web请求之前或之后完成一些特殊工作/abc.
我知道在非常高的层次上我需要编写一个bean后处理器,扫描我的注释类,并在需要时注入自定义mvc拦截器.但是有没有简化此任务的快捷方式?特别是对于上面的两个例子.
提前致谢,
使用spring-boot,可以@Conditional在一个@Bean定义上使用多个注释吗?如果是这样,是否有可预测的订单可以解决?换句话说,我可以@ConditionalOnResource and @ConditionalOnMissingBean在同一个@Beandef 上指定两者吗?哪一个优先?
我正在使用spring-boot 1.0.2.RELEASE.
谢谢,贾斯汀
对于Spring,传递给@Query注释的字符串的参数是否被视为纯数据,例如,如果您使用的是PreparedStatement类或任何旨在阻止SQL注入的方法?
final String MY_QUERY = "SELECT * FROM some_table WHERE some_column = ?1";
@Query(value=MY_QUERY, nativeQuery = true)
List<SomeEntity> findResults(String potentiallyMaliciousUserInput);
Run Code Online (Sandbox Code Playgroud)
结论:上面的代码是否容易受到SQL注入的影响?
我正在使用@ComponentScan并@Component定义我的春豆.我想要的是声明其中一个bean autowire-candidate=false.
这可以使用xml中的此属性来完成.是不是注释中的等价物?
我想要这个的原因是因为我有2个相同接口的实现,我不想使用@Qualifier.
编辑:使用@Primary是一个有效的解决方案,但autowire候选人在我看来似乎是一个有用的功能与自己的语义.
谢谢
作为spring注释的新手,我需要澄清下面的代码.
@PostFilter("hasPermission(filterObject, 'READ') or hasRole('ROLE_ADMIN')")
public List<User> getUsers(String orderByInsertionDate,
Integer numberDaysToLookBack) throws AppException
Run Code Online (Sandbox Code Playgroud)
;
所以这意味着getUsers返回的用户列表将只包含那些"READ"对调用对象具有完全访问权限或者调用对象具有角色的元素"ROLE_ADMIN".谢谢.
有没有办法在Spring中将空列表设置为属性的默认值,如下所示:
@Value("${my.list.of.strings :" + new ArrayList<>() + "}")
private List<String> myList;
Run Code Online (Sandbox Code Playgroud)
显然不是新的ArrayList,但我需要一个空列表.
我将.properties文件中的属性注入到使用@Value注释的字段中.但是,此属性提供敏感凭据,因此我将其从存储库中删除.我仍然希望如果有人想要运行项目并且没有.properties文件,其凭据将默认值设置为字段.
即使我将默认值设置为字段本身,当.properties文件不存在时,我也会遇到异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxx': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'secret' in string value "${secret}"
Run Code Online (Sandbox Code Playgroud)
这是带注释的字段:
@Value("${secret}")
private String ldapSecret = "secret";
Run Code Online (Sandbox Code Playgroud)
我预计在这种情况下只会设置普通字符串"secret".
前几天我遇到了一个问题,其中一个@Valid注释被意外地从控制器类中删除了.不幸的是,它没有破坏我们的任何测试.我们的单元测试都没有实际运行Spring AnnotationMethodHandlerAdapter路径.我们直接测试我们的控制器类.
如果我的@MVC注释错误,我该如何编写一个正确失败的单元或集成测试?有没有办法我可以让Spring找到并使用MockHttpServlet查找和运用相关的控制器?
使用@ModelAttribute和有@Valid什么好处?
哪些是差异?
可以一起使用它们吗?
我已经在 app类ComponentScan中使用注释,但是如果我仅使用此注释,它将在获取存储库引用时出现问题。因此,为了克服这个问题,我正在使用和注释。MainSpring BootEntityScanEnableJpaRepositoriescomponentScan
@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么需要使用其他两个注释?如果我已经在使用@ComponentScan.