【问题标题】:Spring jdbctemplate best waySpring jdbctemplate 最佳方式
【发布时间】:2015-10-27 18:55:50
【问题描述】:

spring.xml

<bean id="jdbcTemp" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="portalDataSource" />
</bean>

在课堂上

    @Repository
public class DBUtil{

    private static final long serialVersionUID = -6203751104015962909L;
    @Autowired
    JdbcTemplate jdbcTemp;

    private static Logger log = Logger.getLogger("scmLogger");

    @Transactional(readOnly=true)
    public List<Map<String, Object>> getData(String qry, Object[] pAttr){
        log.debug("DBUtil.getData() qry "+qry);
        List<Map<String, Object>> vList =  new ArrayList<Map<String,Object>>(); 
        vList = jdbcTemp.queryForList(qry, pAttr);
        return vList;
    }

我想知道这个“jdbcTemplate”是否是一个单例,即我的应用程序中的一个实例。这是最好的使用方式还是其他更好的方式。请提出建议。

问候

阿迪布

【问题讨论】:

    标签: java spring spring-mvc dependency-injection


    【解决方案1】:

    虽然我不是 Spring 专业人士,但这个 jdbcTemplate 是一个单例。除非另有说明,否则 Spring 管理的每个 bean 都是单例的。而且这种用法没有错。

    【讨论】:

      【解决方案2】:

      在 Spring 中定义 bean 时,默认情况下它具有单例范围。

      在您的情况下,您没有定义不同的范围,因此它是单例的。

      http://www.tutorialspoint.com/spring/spring_bean_scopes.htm

      【讨论】:

        【解决方案3】:

        是的,spring 中的所有 bean 默认都是singleton,以确保您可以在 bean 标签中指定它

        <bean id="jdbcTemp" class="org.springframework.jdbc.core.JdbcTemplate" scope="singleton">
            <property name="dataSource" ref="portalDataSource" />
        </bean>
        

        在你的课堂上,你正在自动连接它,这是最好的方法。确保您在 xml 中的 id 和实例变量名称相同,在您的代码中其正确的 jdbcTemp

        【讨论】:

          猜你喜欢
          • 2016-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-24
          • 1970-01-01
          • 1970-01-01
          • 2020-10-12
          • 1970-01-01
          相关资源
          最近更新 更多