程序启动void类方法被加载,不能理解,求教大神

Be_nurturing 2018-10-11 10:24:06
实体类 GetDictionary 中的getDictionary方法为什么会在程序启动时被加载,然后执行了dictionary中listTree这个sql,查询出了对应的结果呢控制台中可以看到记录的日志信息,不是说只加载静态代码块?SqlMapClientDaoSupport 这个类是jar包中的类。求大神指教


public class GetDictionary extends SqlMapClientDaoSupport{

public static Map<String,String> map = new HashMap<String,String>();

@SuppressWarnings({ "unchecked", "rawtypes" })
public void getDictionary(){
Map map1= new HashMap();
map1.put("key", "xxxx");
List<DictionaryObj> list = this.getSqlMapClientTemplate().queryForList("dictionary.listTree",map1 ) ;

for(DictionaryObj dictionaryObj :list){
logger.debug(dictionaryObj.getDicCode() +"--"+ dictionaryObj.getDicValue());
map.put(dictionaryObj.getDicCode(), dictionaryObj.getDicValue());
}
System.out.println(map);
logger.info("加载数据字典成功!{}",list.size());
}
}

...全文
253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Be_nurturing 2018-10-15
  • 打赏
  • 举报
回复
最后找到个这个spring 配置文件中的类加载 初始化的方法
<bean id="dicionaryInit" class="com.geong.xxx.xxx.xxx.GetDictionary"
init-method="getDictionary">
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
Be_nurturing 2018-10-15
  • 打赏
  • 举报
回复
我知道map前的static ,程序启动会加载一个map,可是会初始化一个空的map ,我看后台启动日志是执行了getDictionary()方法的查询sql语句,并且返回了结果
十八道胡同 2018-10-14
  • 打赏
  • 举报
回复
map 是static,会自己初始化,但是getDictionary()方法,你不调用是不会自己执行的。


冲上云霄 、 2018-10-13
  • 打赏
  • 举报
回复
你把map前面的static去掉
鬼善 2018-10-13
  • 打赏
  • 举报
回复
代码太少看不明吧,启动项目试试懒加载,看还会出现不

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧