00:00
下边呢,我们就来看一下第一种情况,如果我们需要单独的LC容器的话,这个时候这个spring跟spring mvc应该如何进行整合,那我们这块的话呢,做一个模拟,就是说我们用spring IC容器啊,去初始化一个service。然后呢,Spring这个LC容器去初始化这个handle德ler,嗯,至于说像事物啊,数据源啊,整合harm net啊,整个其他框架呀,我们这里边就不讨论了,道理都是一样的,对吧?首先我来新建一个类,这个类呢起个名字叫user service。啊,加上一个注解。为了更好地说明呢,我们来写一个构造器。打一句话。打这句话有什么用?大家说,如果这句话要是被打印的话,Contractor,我们就知道这个实例被创建一次吧。同样同样,Hello word,这个也来打印一遍。
01:16
Hello world的constructor,然后呢,我们把U给它注入进来。At out,好的,下面呢,我们去搞我们这个IOC容器的listener。配置启动spring LC容器的奥斜杠。contact LA下的。BS.xl文件,这个文件他还没写哈,一会我得加一下,别的不用了,加进来。
02:11
Beans contact,其他吗?不加了。好送什么的包contact com点。苏VC,然后呢,底下可能需要配置数据源,整合其他框架事务等啊后边的话呢,我就不说了,好吧,现在呢,启动一下来看一看,诶我现在既有spring mvc这个LC容器,又有spring LC容器,它可以很好的。这个这个这个和谐的工作吗?是吧,和谐社会和谐的工作吗?看一下。早起。
03:05
好,看看。控制台。诶,这个是没问题的是吧?嗯,点一下运行效果的话呢,也OK,但这是不是意味着没问题呢,看一下控制台,哎哟。我们发现hellowood被创建了两次,看到了吗?U的service也被创建了两次,这个是特别不爽的一件事。为什么都会被创建两次呢?我们过来看一下我们这个spring mvc的这个,它扫描的呢,是spring mvc这个包。这个包是吧,那同样的我这个BSX文件扫描的也是这个包,所以说对于这里边的这个handle以及service被每个容器都初始一遍,导致初始化两遍,那这个很显然是有问题的。好了,我们看这个问题应该如何解决呢?
04:06
过来先出问题。问题说,若spring的IOC容器和spring mvc的IOC容器扫描的包有重合的部分。就会导致。有的病会被创建两次,那很显然这个是不好的吧,如何解决呢?第一个办法,最直观的办法就是,哎,我让他不有重合的呗,好了。是。
05:02
Spring的IOC容器扫描的包跟spring mvc的AC容器扫描的包没有重合的部分,我们看一看啊,这件事情是不是很容易做到呢?说容易也容易,说不容易也不容易。为什么这么说呢?如果我们强制规定,我把所有的handleer都放在一个固定的包下。而其他的像DAO啊,像这个service啊,也放在固定的保下,他们之间没有重合的就可以,但是啊,开发的时候有的时候。却不太容易做到,为什么呢?开发的时候呢,我们在规划的,规划这包的时候啊,有可能这个包是根据模块来规划的,懂我这个意思吧,比方说诶,用户模块,订单模块,客户模块,在每个模块里边可能都有handler service以及DAO,就是说我这个handleer是分散在很多个这个模块里边的,Service DA也一样,这个时候你再拿我的这个什么呀,这个呃,Base package去详细规划的话,有点麻烦。
06:21
所以说这个呢,呃,你要是强制去说所有哈密都放在一个包下也可以,但开发的时候有的时候诶,我们希望。按模块划分,这个时候呢,这种方式就会有一些问题,好了,第二个方式我们还能怎么办呢?还有办法吗?还有吧,我们可以使用什么?我们在讲spring的时候,我们讲过一个叫contact contact component有两个子节点,一个叫,还有一个叫什么,对吧。使用这个和这个子节点。
07:07
啊来规定只能扫描的注解,哎,我使用这个呢,我来规定那是往哪去解,比方说我这个是斯VC的,那好了,斯VC的等一下哈。我写个use default filter,把这个只写为false,看到了吧,就是我不再用默认的filter,默认的filters就是比方说默认情况下。Controller service report全扫描,现在的话呢,我告诉你不扫描了,扫描哪些呢?诶你需要看我这里边给你规划的情况好了,我们扫描的一个是叫肯抽了。什么他?
08:01
还有一个呢,叫controller controller advice。还有他。这不是MVC处理异常的那个注解吗?还记得吧?回退。诶,我们的。Spring的LC容器呢?只找到这两个图解,那对应的。那对应的我的。这个BS所对应那个LC容器不扫描这样个注解是吧?Exclude filter啊写个他再写一个。这有吧。复制全类名回馈。这样不就可以了吗?看到了吧,这就是我们说的第二种方式。
09:02
好,走起看看效果。先看诶执行是没问题的,好打开我们看,这个时候我们看到contractor跟controller。各只被创建了一次,对吧,哎,这样我们就解决了。集成spring mvc的问题,说白了呢,就是我们会遇到这样的一个问题,我们使用这样的方式进行解决。是吧?下节课我们来说一下spring mvc的这个LC容器跟这个LC容器之间有什么关系。下节课说。
我来说两句