我喜欢基于构造函数的注入,因为它允许我创建注入的字段final.我也喜欢注释驱动注射,因为它简化了我的注意事项context.xml.我可以标记我的构造函数,@Autowired一切正常,只要我没有两个相同类型的参数.例如,我有一个班级:
@Component
public class SomeClass {
@Autowired(required=true)
public SomeClass(OtherClass bean1, OtherClass bean2) {
…
}
}
Run Code Online (Sandbox Code Playgroud)
和应用程序上下文:
<bean id="bean1" class="OtherClass" />
<bean id="bean2" class="OtherClass" />
Run Code Online (Sandbox Code Playgroud)
应该有一种方法在类的构造函数上指定bean ID SomeClass,但我在文档中找不到它.是可能,还是我梦想着一个不存在的解决方案呢?
我需要在Java中进行一些非常简单的URL操作.就像在查询中获取参数的值,或者更新它一样,...我期望在commons-lang包中找到一个简单的实用程序类,但是没有.我知道这是一个简单的问题,但是如果已经写了一些东西,为什么还要这样呢?你知道吗?
我想至少具备以下功能:
String myUrl = "http://www.example.com/test.html?toto=1&titi=2";
// get the value of a parameter
String parameterValue = UrlUtils.getParameterValue(myUrl, "toto");
Assert.equals(parameterValue, "1");
// update a parameter
String newUrl = UrlUtils.updateParameter(myUrl, "toto", 3);
parameterValue = UrlUtils.getParameterValue(myUrl, "toto");
Assert.equals(parameterValue, "3");
Run Code Online (Sandbox Code Playgroud)
理想情况下,它会处理所有与编码相关的问题,并使用java.net.Url以及Strings.
谢谢你的帮助 !
我有一个似乎是一个简单的问题,正如标题中所述.这是我的课程类型:
public class Foo {
@Autowired
public Foo(@Qualifier("bar") Set<String> bar) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下spring语境运行:
<context:annotation-config />
<util:set id="bar">
<value>tata</value>
<value>titi</value>
<value>toto</value>
</util:set>
<bean id="foo" class="Foo" />
Run Code Online (Sandbox Code Playgroud)
这无法运行:
没有为依赖[java.lang.String的集合]找到匹配的类型为[java.lang.String]的bean:期望至少有一个bean可以作为此依赖项的autowire候选者.依赖注释:{@ org.springframework.beans.factory.annotation.Qualifier(value = bar)}
请注意,如果我将其他参数添加到我的构造函数中,它可以正常工作.如果我使用setter注入,它工作正常.我敢肯定我会错过一些明显的东西......你知道吗?
我有格式的日期2008-12-23T00:00:00Z.这看起来很像带有祖鲁(UTC)时区的ISO 8601格式.我虽然以下代码将解析它(使用commons-lang):
String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });
Run Code Online (Sandbox Code Playgroud)
如果我采用相同的模式(yyyy-MM-dd'T'HH:mm:ssZZ)但删除时区,它的工作原理.
你知道我如何识别祖鲁时区吗?我只能访问Java 1.4和Jakarta commons-lang.没有Joda时间对我来说......
我想在Ehcache上面实现以下算法:
但我永远不会得到一个过期的元素(Element.isExpired()).我尝试使用我的缓存配置(尤其是TimeToLive和TimeToIdle),但我似乎无法让它按我的意愿工作.我可以列出缓存中的键,但如果我"get()"一个过期的元素,我总是得到一个null.
我究竟做错了什么 ?
我试图一起使用Spring和wx-xmlrpc.问题是XmlRpcClient有一个不遵循Java Bean规范的setConfig()方法:setter和getter不使用相同的Class.所以当我有以下context.xml时Spring抱怨:
<bean id="xmlRpcClient" class="org.apache.xmlrpc.client.XmlRpcClient">
<property name="config">
<bean class="org.apache.xmlrpc.client.XmlRpcClientConfigImpl">
<property name="serverURL" value="http://example.net" />
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
它说:Bean属性'config'不可写或具有无效的setter方法.setter的参数类型是否与getter的返回类型匹配?
有没有办法覆盖它?我知道我可以为这个bean写一个特定的工厂,但在我看来,这不是我最后一次发现这种问题.我使用质量可疑的遗留代码工作很多...能够使用Spring XML配置将是一个很大的帮助!
我需要能够从Drupal之外的客户端编辑节点(这不能实现为Drupal模块).我想找到一个模块,它将基本的Drupal功能公开为HTTP API(REST,SOAP,JSON,...).我找到了webservices模块,但我找不到任何文档.
你知道我在哪里可以找到这个模块的文档吗?或者提供相同功能的任何其他模块?
我想用Jackson解析一个 JSON 文档并在所有节点上应用一些转换。例如,假设我希望反序列化后所有值都为大写。
实际用例有点复杂:
Jackson 中有足够的配置选项/钩子,所以我很确定这是可能的,我只是找不到办法。
下面的测试显示了我想要实现的目标:
public class JsonValueFilterTest {
private ObjectMapper mapper;
@Before
public void setupObjectMapper() {
mapper = new ObjectMapper();
// TODO: configure mapper to upper case all values
}
@Test
public void printJson() throws IOException {
Entity myEntity = new Entity("myName");
mapper.writeValue(System.out, myEntity); // prints: {"name":"myName"}
}
@Test
public void valuesAreUpperCasedWhenLoaded() throws IOException {
Entity myEntity = mapper.readValue("{\"name\":\"myName\"}", Entity.class);
assertThat(myEntity.getName()).isEqualTo("MYNAME"); // fails
}
public static class Entity {
private final String name; …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题.我有一个这样定义的接口:
public interface SomeInterface {
String someMethod();
}
Run Code Online (Sandbox Code Playgroud)
这将由许多模型类实现,例如
public class SomeClass implements SomeInterace {
...
@Override
public String someMethod(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
最后我有一个需要调用doSomething方法的第3类,记住我有多个符合SomeInterface的模型.所以我将方法定义为:
public class SomeUsefulClass {
public void doSomethingCool(Class<SomeInterface>aParam) {
//How do I specify aParam.someMethod(); A cast doesn't work
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用JAVA我的朋友使用SYMBIAN
我和我的朋友有相同的rsa模数.如果我使用公钥加密数据,那么我的朋友能够解密相同的数据.但如果我的朋友使用公钥加密数据,那么我无法解密数据.我收到一个错误,因为"数据必须从零开始"
public static byte[] encrypt(byte[] encrptdByte) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
byte[] encryptionByte = null;
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
encryptionByte = cipher.doFinal(encrptdByte);
return encryptionByte;
}
public static void decrypt(byte[] encrptdByte) throws NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException {
byte[] encryptionByte = null;
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
encryptionByte = cipher.doFinal(encrptdByte);
System.out.println("Recovered String ::: " + new String(encryptionByte));
}
Run Code Online (Sandbox Code Playgroud)
谢谢Sunil