来自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工作时它没有并检查日志我可以看到一个类似于的日志条目: …我试图在构造函数的参数中使用@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}等符号应该有效.但它并没有发生在我身上!
谢谢
我想了解是否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或者是否有一个我找不到的内置类型来替换它?