有没有办法匹配以下示例例程的任何类参数?
class A {
public B method(Class<? extends A> a) {}
}
Run Code Online (Sandbox Code Playgroud)
无论传递哪个类,我怎么能总是返回?以下尝试仅适用于匹配的特定情况.new B()
method
A
A a = new A();
B b = new B();
when(a.method(eq(A.class))).thenReturn(b);
Run Code Online (Sandbox Code Playgroud)
编辑:一个解决方案是
(Class<?>) any(Class.class)
Run Code Online (Sandbox Code Playgroud) 如何编码查询参数以在Java中的URL上进行编码?我知道,这似乎是一个明显的问题.
我不确定有两个细微之处:
笔记:
java.net.URLEncoder.encode
似乎没有用,它似乎是为了提交表单的编码数据.例如,它+
代替空间编码空间%20
,并编码不必要的冒号.java.net.URI
不编码查询参数我倾向于将Hibernate与Spring框架结合使用,并使用声明式事务划分功能(例如@Transactional).
众所周知,hibernate试图尽可能地非侵入性和透明性,但是这在使用关系时证明更具挑战性lazy-loaded
.
我看到了许多具有不同透明度的设计方案.
fetchType=FetchType.EAGER)
Hibernate.initialize(proxyObj);
initialize
,但是其他实现并不能保证提供任何等价物.Model
对象本身(使用动态代理或@Transactional
)
loadData()
和loadDataWithDeps()
loadDataWithA()
,....,loadDataWithX()
byId()
操作
findZzzById(zid)
然后getYyyIds(zid)
而不是z.getY()
loadData(id, fetchProfile);
我错过了任何选择吗?
在尝试最小化lazy-loaded
应用程序设计中关系的影响时,哪种方法是您首选的方法?
(哦,对不起WoT)
有没有办法安全地让git在通过HTTP(S)连接到远程存储库时记住我的凭据?
我已经尝试了core.askpass
详细介绍的方法git-config
,让外部脚本提供我的凭据.虽然它工作得很好,但用户名和密码仍然以纯文本形式存储在小shell脚本中.
该FactoryBean的可用于以编程方式创建,这可能需要复杂的实例化逻辑的对象.
但是,似乎由它创建的bean FactoryBean
不会成为弹簧管理.这种解释是否正确?如果是这样,有什么好的解决方法吗?包含一个简短的代码示例来说明我的问题.
ApplicationContext的:
<bean id="searcher" class="some.package.SearcherFactory" />
<bean id="service" class="some.package.Service" />
Run Code Online (Sandbox Code Playgroud)
工厂实施:
public class SearcherFactory implements FactoryBean<Searcher> {
@Override
public Searcher getObject() throws Exception {
return new Searcher(); // not so complex after all ;)
}
@Override
public Class<Searcher> getObjectType() {
return Searcher.class;
}
....
}
Run Code Online (Sandbox Code Playgroud)
工厂创建的类:
public class Searcher() {
private Service service;
@Autowired
public void setService(Service service) {
// never invoked
this.service=service;
}
}
Run Code Online (Sandbox Code Playgroud) 有一天我试着这样做,但它不起作用:
enum MyEnum {ONE = 1, TWO = 2}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,它没有编译!如何定制自定义序列???
我需要一些建议,动态代理比常规代理更有用.
我已经投入了大量精力来学习如何有效地使用动态代理.在这个问题中,抛开像AspectJ这样的框架基本上可以执行我们尝试使用动态代理实现的所有内容,或者例如CGLIB可以用来解决动态代理的一些缺点.
是其他人吗?
public Object invoke(Object target, Method method, Object[] arguments) {
System.out.println("before method " + method.getName());
return method.invoke(obj, args);
}
}
Run Code Online (Sandbox Code Playgroud)
装饰器模式肯定是有用的,因为它允许所有代理方法的副作用(尽管这种行为是书籍 - 使用方面的例子..).
public Object invoke(Object target, Method method, Object[] arguments) {
if ("getValues".equals(method.getName()) {
// check or transform parameters and/or return types, e.g.,
return RangeUtils.validateResponse( method.invoke(obj, args) );
}
if ("getVersion".equals(method.getName()) {
// another example with no delegation
return 3;
}
}
Run Code Online (Sandbox Code Playgroud)
另一方面,合同只能避免实现完整接口的需要.然后,重构代理方法将无声地使动态代理无效.
在异构环境中打包和部署服务器端java软件1)的现代替代方案2)?
我找不到关于这个主题的大量连贯或最新信息,但我有一些想法.我会开始的
war
文件捆绑到ear
(Enterprise archives)文件中
war
可以从一个可执行文件中提供多个传统文件.第一个选项一直是我的参考方法,但是需要大量的配置,安装脚本,这些脚本在不同的环境(例如,Linux,Windows)上有所不同.
哪些现代替代品使包装和部署更容易?
1)想象一下像微服务,RESTful通信等的SOA设置
.2)考虑到这一点,我们排除了PaaS
诸如cloudbees,cloudfoundy等提供商.他们应该得到自己的主题.
我有一个问题,net.sf.ehcache.CacheManager
出现返回无效的统计信息.
我正在使用ehcache-core v2.3.2
(最新版本)ehcache-spring-annotations
.
问题是,getMemoryStoreObjectCount
返回1个对象同时兼具getCacheHits
和getCacheMisses
返回0.应该是总计数hits + misses
吗?
下面的单元测试应该说明问题(它应用于空数据库):
@Test
public void testCache() {
Entity e = ..
dao.storeEntity(e);
dao.getEntity(e);
assertEquals(1, cache.getStatistics().getMemoryStoreObjectCount()); // ok
assertEquals(0, cache.getStatistics().getCacheHits()); // ok
assertEquals(1, cache.getStatistics().getCacheMisses()); // fails due to 0
}
Run Code Online (Sandbox Code Playgroud)
为了完整性,我包括所有必要的配置:
Spring配置
<ehcache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
ehcache.xml中
<ehcache>
<defaultCache eternal="false" maxElementsInMemory="1000"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/>
</ehcache>
Run Code Online (Sandbox Code Playgroud)
道
@Cacheable(keyGenerator=@KeyGenerator(name="StringCacheKeyGenerator")) …
Run Code Online (Sandbox Code Playgroud) 是否可以检测类是否是代理(动态,cglib或其他)?
让类A
和B
实现一个通用的接口I
.然后我需要定义一个classEquals
签名例程
public boolean classEquals(Class<? extends I> a, Class<? extends I> b);
Run Code Online (Sandbox Code Playgroud)
使得它的计算结果为真仅当a.equals(b)
或Proxy(a).equals(b)
,其中Proxy(a)
表示类型的动态代理A
(动态,CGLIB或其他方式).
在这种帮助下@Jigar Joshi
,到目前为止它是这样的:
public boolean classEquals(Class a, Class b) {
if (Proxy.isProxyClass(a)) {
return classEquals(a.getSuperclass(), b);
}
return a.equals(b);
}
Run Code Online (Sandbox Code Playgroud)
该问题是,它没有检测如,CGLIB代理.