わかりました、この質問は多くの反対票を獲得するでしょう...
男がSpring xml beanfactoryの問題に直面しているこの質問を見たところです。
これがなぜなのかを理解したい:
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="namingStrategy">
<ref bean="namingStrategy"/>
</property>
<property name="mappingResources">
<list>
<!--<value>genericdaotest/domain/Person.hbm.xml</value>-->
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
とにかくこれよりも優れているはずです:
public class BeanFactory {
public LocalSessionFactoryBean getSessionFactory() {
LocalSessionFactoryBean bean = new LocalSessionFactoryBean();
bean.setNamingStrategy(getNamingStrategy());
bean.setMappingResources(Arrays.asList(getPerson());
bean.setHibernateProperties(new Properties() {{
setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
setProperty("hibernate.show_sql", "true")
setProperty("hibernate.hbm2ddl.auto", "create");
}});
bean.setDataSource(getDataSource());
return bean;
}
}
短く、理解しやすく、Spring の癖がなく、外部ライブラリを実行する必要がなく (他のライブラリと衝突する可能性があります)、段階的なデバッグが可能で、単体テストが可能であり、そうではありません。リフレクションは必要ありません。OOP の利点となる可能性があります。IDE からリファクタリングする方が簡単です。コンパイル時に型がチェックされます。XML ではなく Java であり、実行時に解析する必要はありません。コンパイル時に、形式的に正しい (実行時に例外を検出しない) 場合、構成パラメーターを外部化する必要がある場合は、プロパティ ファイル (実際の構成を含む) を使用します。
そして何よりも、私のコードには、あらゆる種類のオブジェクト (IoC の原則とは何の関係もない巨大で醜いサービス ロケーターなど) をインスタンス化する責任がある "BeanFactory" と呼ばれる巨大なシングルトン クラスは必要ありません。
したがって、質問は次のとおりです。
オブジェクトを Java で構成して集約するよりも、巨大な XML を作成する方が好まれるのはなぜですか?