小编gar*_*ryj的帖子

Spring MVC @RequestMapping继承

来自Struts2我习惯于@Namespace在超类(或package-info.java)上声明注释,继承类随后将获取@Namespace其祖先注释中的值,并将其添加到Action的请求路径中.我现在尝试使用@RequestMapping注释在Spring MVC中执行类似的操作,如下所示(为简洁起见,代码已修剪):

package au.test

@RequestMapping(value = "/")
public abstract class AbstractController {
    ...
}

au.test.user

@RequestMapping(value = "/user")
public abstract class AbstractUserController extends AbstractController {

    @RequestMapping(value = "/dashboard")   
    public String dashboard() {
        ....
    }
}

au.test.user.twitter

@RequestMapping(value = "/twitter")
public abstract class AbstractTwitterController extends AbstractUserController {
    ...
}

public abstract class TwitterController extends AbstractTwitterController {

    @RequestMapping(value = "/updateStatus")    
    public String updateStatus() {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)
  • / 按预期工作
  • /user/dashboard 按预期工作
  • 但是,当我希望/user/twitter/updateStatus工作时它没有并检查日志我可以看到一个类似于的日志条目: …

java spring-mvc

34
推荐指数
2
解决办法
3万
查看次数

当属性不存在时,Spring @Value注释不使用默认值

我试图在构造函数的参数中使用@Value注释,如下所示:

@Autowired
public StringEncryptor(
    @Value("${encryptor.password:\"\"}") String password,
    @Value("${encryptor.algorithm:\"PBEWithMD5AndTripleDES\"}") String algorithm,
    @Value("${encryptor.poolSize:10}") Integer poolSize, 
    @Value("${encryptor.salt:\"\"}") String salt) {
...
}
Run Code Online (Sandbox Code Playgroud)

当类路径中存在属性文件时,属性将完美加载并且测试执行正常.但是,当我从类路径中删除属性文件时,我原本期望使用默认值,例如poolSize将设置为10或算法设置为PBEWithMD5AndTripleDES但是情况并非如此.

通过调试运行代码(这只会改变工作后,@Value("${encryptor.poolSize:10}") Integer poolSize@Value("${encryptor.poolSize:10}") String poolSize我发现的默认值没有被设置为这是造成NumberFormatExceptions)和参数的形式:

poolSize = ${encryptor.poolSize:10} 要么

algorithm = ${encryptor.algorithm:"PBEWithMD5AndTripleDES"}
Run Code Online (Sandbox Code Playgroud)

而不是预期的

poolSize = 10 要么

algorithm = "PBEWithMD5AndTripleDES"
Run Code Online (Sandbox Code Playgroud)

基于SPR-4785,$ {my.property:myDefaultValue}等符号应该有效.但它并没有发生在我身上!

谢谢

java spring annotations

22
推荐指数
2
解决办法
4万
查看次数

Python 3.9 和 PEP 585 中的typing.Any - 标准集合中的类型提示泛型

我想了解是否typing仍然需要该软件包?

如果在 Python 3.8 中我这样做:

from typing import Any, Dict
my_dict = Dict[str, Any]
Run Code Online (Sandbox Code Playgroud)

现在,在通过 PEP 585 的 Python 3.9 中,现在首选使用集合的内置类型,因此:

from typing import Any
my_dict = dict[str, Any]
Run Code Online (Sandbox Code Playgroud)

我是否仍然需要使用typing.Any或者是否有一个我找不到的内置类型来替换它?

python type-hinting python-typing python-3.9

12
推荐指数
1
解决办法
4340
查看次数