确实不科学,因为applicationContext是mvc context的父容器,mvc context可以引用applicationContext的bean,而applicationContext无法引用到mvc的bean,如果你这样配,有些东西如果applicationContext需要,它就找不到了,所以还不如全放到applicationContext中。
spring查找bean,会现在当前context中查找,如果没有满足的,再到父容器查找,
applicationContext是在web.xml中配置的ContentLoader监听器启动的,当xml启动时加载,并按照一个约定的key放在java的ServletContext中,然后mvc 的servlet初始化时,先从ServletContext中按照约定的key取出来,以它为父容器,去创建mvc的容器。
再说,两个不同的spring context,是不会有冲突的,是可以存在相同的bean定义的,只不过优先查找当前context,不存在才往上找。所以你应该检查下是什么错误,看看什么原因
理论上是。分开更好,功能区分的更明确。
不必须啊。这只是分开写而已。
只需要在IPython代码中搜索Heartbeat、ParentPollerUnix和HistorySaving等,就可以找到这些线程的代码,这里就不再多做分析了。下面让我们着重看看主线程是如何执行用户代码的。
用户代码的执行
我们可以通过在用户代码中执行traceback.print_stack()输出整个执行堆栈:
import traceback
traceback.print_stack()
File "
File "/usr/local/lib/python2.7/dist-packages/IPython/zmq/ipkernel.py", line 928, in main
app.start()
File "/usr/local/lib/python2.7/dist-packages/IPython/zmq/kernelapp.py", line 348, in start
ioloop.IOLoop.instance().start()
File "/usr/local/lib/python2.7/dist-packages/zmq/eventloop/ioloop.py", line 340, in start
self._handlers[fd](fd, events)
File "/usr/local/lib/python2.7/dist-packages/zmq/eventloop/zmqstream.py", line 420, in _handle_events
self._handle_recv()
File "/usr/local/lib/python2.7/dist-packages/zmq/eventloop/zmqstream.py", line 452, in _handle_recv