我有一个foo.txt我想删除的文件,另一个,bar.txt我想添加.如果这两个文件的内容超过50%相同,Git会考虑将foo.txt其重命名为bar.txt.我怎样才能让Git真正看到这个单独删除,在同一次提交中单独添加,而不更改全局阈值检测%.
谢谢!
使用以下JAXB注释定义类:
class Course {
@XmlElement (name = "book")
List<Book> requiredBooks = new ArrayList<Book>();
Run Code Online (Sandbox Code Playgroud)
解组包含此文档的XML文档时
<course>
...
<book/>
</course>
Run Code Online (Sandbox Code Playgroud)
我最终将一个Book添加到列表中,其所有属性都设置为null.我不控制XML输入.如何防止添加此空白书?我尝试拦截set ..()或添加..()方法,但是在处理集合时,JAXB绕过了setter.有什么建议?
在我的 Spring 应用程序中,我有使用 Spring 缓存机制的组件。每个@Cacheable注释指定要使用的缓存。我想自动发现启动时所需的所有缓存,以便可以自动配置它们。
最简单的方法似乎是创建一个标记接口(例如:)CacheUser供每个缓存组件使用:
@Component
public class ComponentA implements CacheUser {
@Cacheable("dictionaryCache")
public String getDefinition(String word) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会让 Spring 自动发现这个接口的所有实现,并将它们自动连接到一个配置列表,该列表可以在配置缓存管理器时使用。这有效。
@Autowired
private Optional<List<CacheUser>> cacheUsers;
Run Code Online (Sandbox Code Playgroud)
我的计划是获取每个发现的类并找到所有用@Cacheable. 从那里我将访问注释的属性并获取缓存名称。我正在使用AnnotationUtils.findAnnotation()来获取注释声明。
这就是计划失败的地方。Spring 实际上连接代理而不是原始组件,并且注释不会复制到代理的方法中。我发现的唯一解决方法是利用代理实现Advised提供对代理类的访问这一事实:
((Advised)proxy).getTargetSource().getTargetClass().getMethods()
Run Code Online (Sandbox Code Playgroud)
从那里我可以获得原始注释,但这种方法显然很脆弱。
所以两个问题,真的:
@Cacheable我项目中的所有用途吗?我很乐意没有标记界面。谢谢!