Jav*_*vee 5 java spring hashmap spring-ioc
现在我在 spring bean 映射中拥有应用程序相关的数据,并将该映射传递给其他类作为参考。
地图定义如下
<bean id="sampleMap" class="java.util.HashMap">
<constructor-arg index="0" type="java.util.Map">
<map key-type="java.lang.Integer" value-type="java.lang.Float">
<entry key="1" value="5"/>
<entry key="2" value="10"/>
<entry key="3" value="15"/>
</map>
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
该映射在其他 bean 中被称为
<bean id="config" class="com.example.Config" abstract="false">
<property name="sampleMap" ref="sampleMap"/>
.
.
</bean>
Run Code Online (Sandbox Code Playgroud)
我只想从数据库表中检索映射值并将其注入到其他类中。我怎样才能在春天做到这一点。基本上该表包含与应用程序相关的数据。map 的键和值将是 int,Configuration。
加载配置数据的最佳位置是什么?我们可以使用 spring beans map 来做,还是有其他好的方法来从数据库加载配置并在应用程序的其他地方(如服务、委托和 DAO)引用该配置?
帮助将不胜感激
谢谢
你应该使用 spring 的FactoryBean.
public class MyHashMapFactoryBean implements FactoryBean<Map<Integer, Float>>{
@Autowired
private Datasource datasource;
public Map<Integer, Float> getObject(){
return <load from database>;
}
public Class<Map> getObjectType() { return Map.class ; }
public boolean isSingleton() { return true; }
}
<bean id="sampleMap" class="my.package.MyHashMapFactoryBean">
<here you could pass some properties e.g. jdbc datasource>
</bean>
Run Code Online (Sandbox Code Playgroud)