橘子洲烟花

        9月24晚上,橘子洲中秋放烟花啦,可惜这次观看位置是杜甫江阁对面,预约杜甫江阁现在需要会员,滴滴滴表示现充会员也不行—-失败,而且交通管制,在滴滴师傅的指点下到了这个也很棒的位置。

路上比较堵车,万幸提前3分钟赶到,烟花表演20分钟,视频由笑笑提供,hhhhhh我真是个懒鬼。烟花很漂亮,回来的路上有微风,迎面走过去很舒服

Spring接口容器加载配置文件

去年记得有一次面试,提问Spring装载Bean和初始化的问题,回答的并不好。重新整理下思路。

首先先从加载Spring配置文件说起。

1     ApplicationContext  接口容器

ApplicationContext 接口用于加载Spring配置文件,实现类为ClassPathXmlApplicationContext  和  FileSystemXmlApplicationContext,如下图:

a、配置文件在类路径下

b、配置文件在本地目录

c、配置文件在项目跟路径下

2     BeanFactory 接口容器

BeanFactory 接口是 ApplicationContext接口的父类

一般使用 XmlBeanFactory 实现类 加载 Spring 配置文件

XmlBeanFactory的结构:

参数Resource 是接口,有两个实现类:

ClassPathResource : 指定类路径下的资源文件
FileSystemResouce : 指定项目根路径或本地磁盘路径下的资源文件

在创建了 BeanFactory 容器后,通过使用 getBean() 方法,从容器中获得指定的 Bean 对象

编写测试代码举例(spring配置文件我放在了src/resource目录下):

 

3     两个接口容器的区别

区别的本文的重点,也是之前面试的答案。

ApplicationContext 容器 和 BeanFactory 容器 加载的是同一个配置文件,但在代码中这两个容器对象,不是同一个他们对于容器内对象装配时机是不同的。

     a、ApplicationContext 容器中对象的装配时机

     ApplicationContext  容器,会在容器对象初始化时,将其中的所有对象一次性装配好,之后可以直接从内存中获得对象,执行效率高,占用内存。

     b、BeanFactory 容器中对象的装配时机

     BeanFactoy  容器,对容器中的对象的装配与加载采用延迟加载策略,只有在第一次真正调用 getBean() 时,才真正装配该对象。

当然 Bean 本身的装配方式也 值得一说,先挖个坑~~~

 

Hibernate报错: java.lang.ClassCastException: pojo.Student_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy

今天滴滴滴在温故关于Hibernate的查询语法:Query的 list() 与iterate() 时
编写测试代码报错:javassist_0 cannot be cast to javassist.util.proxy.Proxy

hibernate_javassist报错

查阅很多资料 大概有三种解决方法:

1.在web.xml中配置 filter

<filter>
       <filter-name>openSessionInView</filter-name>
      <filter- class>             org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
      </filter-class>
</filter>

<filter-mapping>
     <filter-name>openSessionInView</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

这个方法明显不适用滴滴滴

2.查看项目中是否有冲突的jar包

冲突jar

3.在hbm文件中,指定懒加载为false,不指定默认为true

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="pojo">
         <class name="Student" table="t_student" lazy="false">
         <id name="id" column="tid">
              <generator class="native"/>
        </id>

    //省略字段
</hibernate-mapping>

滴滴滴用第三种方案解决了报错