Struts2源码研究1
看struts2一周,就搞定了一个程序,郁闷。还有源码里的一个注入问题,一直得不到解决。
http://www.iteye.com/problems/2568
网上问了好久也没有满意的答案。。。。还是靠自己吧,自己研究。
首先,web.xml文件里的这一段肯定是个关键。
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
这一段,是对struts2需要的资源的一个初始化。进到Dispatcher里面的init方法里,可以看到init了很多东西。public synchronized void reload(List<ConfigurationProvider> providers) throws ConfigurationException { packageContexts.clear(); loadedFileNames.clear(); ContainerProperties props = new ContainerProperties(); ContainerBuilder builder = new ContainerBuilder(); for (ConfigurationProvider configurationProvider : providers) { configurationProvider.init(this); configurationProvider.register(builder, props); } props.setConstants(builder); builder.factory(Configuration.class, new Factory<Configuration>() { public Configuration create(Context context) throws Exception { return DefaultConfiguration.this; } }); try { // Set the object factory for the purposes of factory creation ObjectFactory.setObjectFactory(new ObjectFactory()); container = builder.create(false); objectFactory = container.getInstance(ObjectFactory.class); ObjectFactory.setObjectFactory(objectFactory); for (ConfigurationProvider configurationProvider : providers) { container.inject(configurationProvider); configurationProvider.loadPackages(); } rebuildRuntimeConfiguration(); } finally { ObjectFactory.setObjectFactory(null); } }
container.inject(configurationProvider);这一句不看代码也明了了。注入贝。
那么struts2里面的注入的大体流程应该就是这样的了(我的理解,不对的请拍砖。。。)
后面的细节再慢慢研究。^-^ 1 楼 liyaxi 2009-02-15 了解真相, 真相让我们更自由! ----圣经
自己搞懂! 是不是很有成就感! 2 楼 ivoter 2011-12-20 能不能把后边的也给贴出来..自己看有点晕...