如何懒惰地在Spring应用程序中加载LDAP配置。

我有application-context.xml,它有如下所示的bean。

      

和一个context.xml一样

  

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++

如果您在我的context.xml中注意到我将资源名称保留为DB_NAME1

我还在application-context.xml文件顶部的beans标记中保留了default-lazy-init =“true” 。 我仍然低于错误

 javax.naming.NameNotFoundException: Name [DB_NAME] is not bound in this Context. Unable to find [DB_NAME]. 

所以我的问题是,如何懒洋洋地加载我的jdbcTemplate / dataSource。

因为在我的应用程序中,一些服务正在攻击数据库,而一些服务正在攻击其他服务。 因此,即使数据库已关闭,其他服务也不应停止工作。

所以我找到了问题的临时解决方案。

写了新的方法,搜索JNDI配置并创建jdbcTemplate,如果它没有这样做,我正在吃exception。

 public JdbcTemplate getJdbcTemplate() { try { Context initContext = new InitialContext(); myDataSource = (DataSource) initContext.lookup("java:/comp/env/DBNAME"); myjdbcTemplate = new org.springframework.jdbc.core.JdbcTemplate(dataSource); } catch (Exception e) { e.printStackTrace(); } return jdbcTemplate; } 

我每次从我的其他DAOImpl方法调用此方法,如下所示

  getJdbcTemplate().query("MySp", args, myBeanRowMapper); 

它现在工作。 但如果你看到更好的方法,请在这里回答。

谢谢