小编Gui*_*ume的帖子

Spring - 注入2个相同类型的bean

我喜欢基于构造函数的注入,因为它允许我创建注入的字段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 spring

59
推荐指数
1
解决办法
6万
查看次数

一个很好的库,用于在Java中执行URL查询字符串操作

我需要在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.

谢谢你的帮助 !

java url

39
推荐指数
1
解决办法
3万
查看次数

使用Spring通过构造函数自动装配集合

我有一个似乎是一个简单的问题,正如标题中所述.这是我的课程类型:

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注入,它工作正常.我敢肯定我会错过一些明显的东西......你知道吗?

java spring annotations

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

如何在Java DateUtils.parseDate中识别Zulu时区?

我有格式的日期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时间对我来说......

java timezone parsing date

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

在Ehcache中检索过期的对象

我想在Ehcache上面实现以下算法:

  • 尝试从缓存中获取一个元素
  • 如果元素没有过期
    • 为价值服务
  • 其他
    • 提供过期的价值
    • 刷新背景中的元素

但我永远不会得到一个过期的元素(Element.isExpired()).我尝试使用我的缓存配置(尤其是TimeToLive和TimeToIdle),但我似乎无法让它按我的意愿工作.我可以列出缓存中的键,但如果我"get()"一个过期的元素,我总是得到一个null.

我究竟做错了什么 ?

java configuration caching ehcache

8
推荐指数
1
解决办法
2375
查看次数

如何使用Spring在不遵循Java bean规范的setter中注入对象?

我试图一起使用Springwx-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配置将是一个很大的帮助!

java spring inversion-of-control

7
推荐指数
1
解决办法
2900
查看次数

通过HTTP API访问Drupal站点

我需要能够从Drupal之外的客户端编辑节点(这不能实现为Drupal模块).我想找到一个模块,它将基本的Drupal功能公开为HTTP API(REST,SOAP,JSON,...).我找到了webservices模块,但我找不到任何文档.

你知道我在哪里可以找到这个模块的文档吗?或者提供相同功能的任何其他模块?

api rest drupal

6
推荐指数
1
解决办法
1889
查看次数

使用 Jackson 反序列化 Json 时如何对所有值应用转换

我想用Jackson解析一个 JSON 文档并在所有节点上应用一些转换。例如,假设我希望反序列化后所有值都为大写。

实际用例有点复杂:

  • 转换比较复杂,transformer类需要注入一些配置,我希望它是一个可配置的实例
  • 转换必须发生在所有属性上,我希望能够不在反序列化的每个类的每个属性上添加注释。

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)

java jackson

2
推荐指数
1
解决办法
2812
查看次数

JAVA方法参数和接口

我一直在努力解决这个问题.我有一个这样定义的接口:

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 interface

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

如何使用rsa privatekey解密数据

我正在使用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

java encryption rsa

-1
推荐指数
1
解决办法
8567
查看次数