Hi Josh,
first of all I wish to say that I was pretty impressed @Devoxx2010 firstly on Spring BOF and later that week with your presentation about new stuff comming from Spring.
Great work.
While there are many peoples still using Spring 2.5, me and my team in my company are trying to keep track with you guys and we started new project in October 2010 using Spring 3. On Spring BOF someone of you guys from Spring asked about some Spring products and mentioned Spring Batch. I was interested about this project and waited for chance to introduce it. And finally I managed to "sell this feature" to PM's 
Well to get to the point, I made it work:
1. I have a web front end application that will deployed to multiple servers, in order to increase availability and to support load balancing.
2. Beside that I have a few, let's say background jobs, something like "services". I didn't want to "polute" Web Front End application with them using quartz, since they don't have to be deployed to that many servers and to use hardware resources while there is no need to do that.
3. So my decision was to make it separate WAR that will be deployed to one(or maybe more) servers, totally independent of server where web front end application is running. But again this WAR (background job) should target live DB in order to do some calculation and to mail those results to recipients.
So this is just short description of architecture of system.
Now I came to the idea that it would be nice to use spring-batch as shell for those background jobs and to have one more feature extra to have web console to "monitor and control" jobs.
Just to make myself clear about this, I made it work, but I really don't want to have those parameters (DataSource URL, DataSource username, etc.) in my application context file. I would like to have them in properties file as they should be.
Now about your latest post,
I am using slf4j as facade to logback. I've enabled DEBUG log level on root logger. So I am sure that spring-batch loads own properties file
Code:
10:50:36.458 [main] INFO o.s.b.f.c.PropertyPlaceholderConfigurer:177 - Loading properties file from class path resource [org/springframework/batch/admin/bootstrap/batch.properties]
10:50:36.463 [main] INFO o.s.b.f.c.PropertyPlaceholderConfigurer:177 - Loading properties file from class path resource [batch-default.properties]
10:50:36.464 [main] INFO o.s.b.f.c.PropertyPlaceholderConfigurer:177 - Loading properties file from class path resource [batch-hsql.properties]
And again there is a bean definition of DataSource in following file:
spring-batch-admin-manager-1.0.0.RELEASE\META-INF\spring\batch\bootstrap\manager\env-context.xml
Code:
<!-- Use this to set additional properties on beans at run time -->
<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/org/springframework/batch/admin/bootstrap/batch.properties</value>
<value>classpath:batch-default.properties</value>
<value>classpath:batch-${ENVIRONMENT:hsql}.properties</value>
</list>
</property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="order" value="1" />
</bean>
So if I am following your logic right and understand you correctly, you were wondering that spring-batch PropertyPlaceholder bean property "ignoreUnresolvablePlaceholders=false" is making me headache?
In my own "job description application context file", I have something like this:
Code:
<util:list id="propertiesLocations">
<beans:value>classpath:com/telegraaf/relatieplanet/fakeprofile/cfg/jdbc.properties</beans:value>
<beans:value>classpath:com/telegraaf/relatieplanet/fakeprofile/cfg/suspicious-profiles.properties</beans:value>
</util:list>
<beans:bean id="appDataPlaceholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:ignoreUnresolvablePlaceholders="false"
p:ignoreResourceNotFound="true"
p:locations-ref="propertiesLocations" />
<beans:bean id="fakeProfileDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.relatieplanet.driver}"
p:url="${jdbc.relatieplanet.url}"
p:username="${jdbc.relatieplanet.username}"
p:password="${jdbc.relatieplanet.password}"
p:validationQuery="${jdbc.relatieplanet.commons_dbcp.validationQuery}" />
And this doesn't work. But again if I replace property placeholders with real data like
Code:
<beans:bean id="fakeProfileDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/rpl_test"
p:username="root"
p:password="root"
p:validationQuery="SELECT 1" />
This works like a charm 
And error that I am getting is that there are some unresolvable properties:
${jdbc.relatieplanet.driver}
Quite big explanation, sorry for such big post.