The documentation for Spring DM, Chapter 6.1 states that when wait-for-dependencies is set to false...
"Context creation will begin immediately even if dependencies are not satisfied. This essentially means that mandatory service references are treated as though they were optional - clients will be injected with a service object that may not be backed by an actual service in the registry initially."
The first sentence is correct; context creation will begin immediately and this could mean that some beans are created right away. However, mandatory service references are NOT treated as though they were optional. The ServiceDynamicInterceptor used to create the proxy for the mandatory services will still have the 'requiredAtStartup' property set to true. Therefore, the getObject() call on the OsgiServiceProxyFactoryBean will block context creation from continuing until the referenced service is available.
I believe the code at OsgiServiceProxyFactoryBean:176 should read something like
Code:
lookupAdvice.setRequiredAtStartup(
getCardinality().isMandatory() && wait-for-deps);
Although there isn't a value or method available at that point in the code for accessing the value of the wait-for-dependencies directive and it would have to be parsed from the bundle headers (with the appropriate default applied).