我理解啊,启动apserver的时候,就自动单例的加载springapp-servlet.xml里所有的类! 
也就是说该web项目用到所有   springapp-servlet.xml   里面的类都是已经初始化好的

解决方案 »

  1.   

    我在配置文件里面配置了proxool,连接池 
    然后在BaseDao   类里直接用jdbcTemplate操作db 
    是不是就能自动用到连接池的功能.这样用容器做我还真有点不习惯. 
    不知道所用的connection是否来自连接池! 
    希望知道的大侠能给我回答一下啊 
    <!--Mysql   DataSource--> 
    <bean   id="proxoolDataSource" 
                    class="org.logicalcobwebs.proxool.ProxoolDataSource"   > 
                    <property   name="driver"> 
                            <value> ${proxool.dbDriver} </value> 
                    </property> 
                    <property   name="driverUrl"> 
                            <value> ${proxool.dbUrl} </value> 
                    </property> 
                    <property   name="user"> 
                            <value> ${proxool.dbUser} </value> 
                    </property> 
                    <property   name="password"> 
                            <value> ${proxool.dbPassWord} </value> 
                    </property> 
                    <property   name="alias"> 
                  <value> springmvc </value> 
              </property> 
    </bean> 
    <!--   jdbc   template   --> 
    <bean   id="jdbcTemplate"   class="org.springframework.jdbc.core.JdbcTemplate"> 
            <property   name="dataSource"> 
                <ref   bean="proxoolDataSource"/> 
            </property> 
    </bean>   <!--Connection--> 
    <bean   id="baseDao"   class="com.cn.springcomm.BaseDao"> 
    <property   name="jdbcTemplate"> 
    <ref   bean="jdbcTemplate"/> 
    </property> 
            <property   name="xtest"   value="test"/> 
    </bean> 
    //CLASS 
    package   com.cn.springcomm; import   java.util.List; 
    import   org.springframework.jdbc.core.JdbcTemplate; public   class   BaseDao   { 
    public   BaseDao(){} public   List   queryForList(String   sql)   { 
    List   list   =   jdbcTemplate.queryForList(sql); 
    return   list; 
    } private   JdbcTemplate   jdbcTemplate; public   JdbcTemplate   getJdbcTemplate()   { 
    return   jdbcTemplate; 

    public   void   setJdbcTemplate(JdbcTemplate   jdbcTemplate)   { 
    this.jdbcTemplate   =   jdbcTemplate; 
    } } 
      

  2.   

    spring配置文件不是启动apserver的时候就自动单例的加载springapp-servlet.xml里面的类吗?这个问题好象应该这样来说:
    用ApplicationContext来启动spring容器是立即加载所有的bean;
    用BeanFactory来启动spring容器的时候只是返回一个代理类,而在你用诸如getbean之类的方法时才去真正创建这个bean对象。
      

  3.   

    根据我的理解,启动时只是读取了全部的配置文件。只有用到的类才会被初始化,当然也包括关联的依赖注入的类。这样做符合JAVA的特点,用不到就不加载到内存的一贯作风。
      

  4.   

    的確,啟動時只加載了配置文件和靜態代碼塊以及關聯的東西
    后面是到你每次去執行的時候他才每次都new下。。
      

  5.   

    加载类指执行 loadClass 那么框架启动一般都会加载类。  代理要根据类的接口或者cglib来生成。而所说的启动类恐怕是生成类的实例。  按道理应该是你写的代码需要被执行的时候,这个类实例才会被生成。而spring提供的一些bean会管理好它实例化过程, 恐怕你不用担心这个问题。生成一个类实例至少有3个策略1  每次调用生成。  stateless
    2  只有一个实例  singleton
    3  根据代理给的id生成。   session当然还有别的。 比如像连接池的做法, stateless & reusable
      

  6.   

    并不是所有的
    向singleton 的 第一次启动时就 init了
    so, prototype 不是。