Sam has wisely seen that Java has a version of IoC via the java.beans.XMLEncoder/XMLDecoder classes.
Take a look at Sam's XML config:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE javabeans SYSTEM "http://www.javarants.com/schemas/javabeans.dtd">
<java version="1.4.2" class="java.beans.XMLDecoder">
<object id="cityFinder" class="com.sampullara.jbioc.CityScape">
<void property="cityMap">
<object class="java.util.HashMap">
<void method="put">
<string>LDN</string>
<string>London</string>
</void>
<void method="put">
<string>FFT</string>
<string>Frankfurt</string>
</void>
</object>
</void>
</object>
<object id="region" class="com.sampullara.jbioc.RegionInfo">
<void property="cityFinder"><object idref="cityFinder"/></void>
<void property="regions">
<object class="java.util.ArrayList">
<void method="add"><string>Europe</string></void>
<void method="add"><string>America</string></void>
</object>
</void>
</object>
</java>
Now, you may not be a big fan of the Spring XML config, but this is even closer to the bone. It really does shout out "WHY ARE WE USING XML FOR THIS AND NOT JUST CODE!" (especially a dynamic language).
Also, although it does allow some dependency injection, it is basic. It doesn't support the layers of components/services like HiveMind.
And IoC itself is only part of the picture. The real power of Spring is that it has practical stuff that you can use out of the box! Great find though Sam!