Spring: Bean fails to read off values from external Properties file when using @Value annotation
        Posted  
        
            by 
                daydreamer
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by daydreamer
        
        
        
        Published on 2012-06-29T19:45:58Z
        Indexed on 
            2012/06/29
            21:16 UTC
        
        
        Read the original article
        Hit count: 335
        
XML Configuration
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <util:properties id="mongoProperties" location="file:///storage/local.properties" />
    <bean id="mongoService" class="com.business.persist.MongoService"></bean>
</beans>
and MongoService looks like
@Service
public class MongoService {
    @Value("#{mongoProperties[host]}")
    private String host;
    @Value("#{mongoProperties[port]}")
    private int port;
    @Value("#{mongoProperties[database]}")
    private String database;
    private Mongo mongo;
    private static final Logger LOGGER = LoggerFactory.getLogger(MongoService.class);
    public MongoService() throws UnknownHostException {
        LOGGER.info("host=" + host + ", port=" + port + ", database=" + database);
        mongo = new Mongo(host, port);
    }
    public void putDocument(@Nonnull final DBObject document) {
        LOGGER.info("inserting document - " + document.toString());
        mongo.getDB(database).getCollection(getCollectionName(document)).insert(document, WriteConcern.SAFE);
    }
I write my MongoServiceTest as
public class MongoServiceTest {
    @Autowired
    private MongoService mongoService;
    public MongoServiceTest() throws UnknownHostException {
        mongoRule = new MongoRule();
    }
    @Test
    public void testMongoService() {
        final DBObject document = DBContract.getUniqueQuery("001");
        document.put(DBContract.RVARIABLES, "values");
        document.put(DBContract.PVARIABLES, "values");
        mongoService.putDocument(document);
    }
and I see failures in tests as
12:37:25.224 [main] INFO  c.s.business.persist.MongoService - host=null, port=0, database=null
java.lang.NullPointerException
    at com.business.persist.MongoServiceTest.testMongoService(MongoServiceTest.java:40)
Which means bean was not able to read the values from local.properties
local.properties
### === MongoDB interaction === ###
host="127.0.0.1"
port=27017
database=contract
How do I fix this?
update It doesn't seem to read off the values even after creating setters/getters for the fields. I am really clueless now.
How can I even debug this issue?
Thanks much!
© Stack Overflow or respective owner