Struts 2中Container.getInstance()与ObjectFactory.buildBean()的差别例如以下。Container.getInstance()的运行过程中须要在struts.xml中声明对应的bean节点如: <bean name ="entity" type ="com.yang.test.Entity" class ="com.yang.test.Entity" />
是通过IOC容器管理得到实例的。依据bean节点中class类型的不同採用不同的InternalFactory的匿名实现,当class中含有@Inject注解时。InternalFactory的create方法调用了Container.inject()方法以实现注入。
ObjectFactory.buildBean()的运行过程分两步。第一步调用Class.netInstance()建立要创建对象的实例,第二部调用Container.inject()实现依赖注入。两者的不同主要体如今实例的创建上,前者是通过在struts.xml其中声明bean节点实现的。而后者无需多余的操作,仅仅要类的构造函数合法就可以。