I inject Strings in my spring config by doing the following:
<bean class="java.lang.String">
    <constructor-arg type="java.lang.String" value="Region" />
</bean>
Is there a shorter way of doing it?
Update: I am using spring 3.0.3.
These are actually used to populate a list:
        <list>
            <bean class="java.lang.String">
                <constructor-arg type="java.lang.String" value="Region" />
            </bean>
            ...
Seems like this works:
<list>
   <value>Region</value>
   <value>Name</value>
   ....
But I agree with the suggestions that this should eventually go in a property and be passed in.
@Inject annotation is a standard annotation, which is defined in the standard "Dependency Injection for Java" (JSR-330). Spring (since the version 3.0) supports the generalized model of dependency injection which is defined in the standard JSR-330.
You should not have String beans. Just use their value directly.
Create a properties file strings.properties and put it on the classpath
strings.key=Region
Declare a PropertyPlaceholderConfigurer
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>strings.properties</value>
    </property>
</bean>
Then annotate instance field Strings as
@Value("${strings.key}")
private String key;
Spring will inject the value from the strings.properties file into this key String.
This obviously assumes that the class in which the @Value annotation appears is a bean managed in the same context as the PropertyPlaceholderConfigurer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With