Java Configurationを使用して、Spring MVCを使用してRESTful Webサービスを作成しています。私の設定ファイルは以下の通りです。私の問題はこれです - 私は、 "myService" Beanの2つのインスタンスが、ただ1つのインスタンスの代わりに作成されていることを発見しました。なぜわからないのですか? 1つだけを作成するように設定を調整するにはどうすればよいですか?Spring Configuration 1つではなく2つのBeanを作成する
誰でも正しい方向に向けることができますか?ありがとう!ここで
は私のコンフィギュレーションクラスです....
@Configuration
public class MyConfig {
@Bean(name = "dataSource")
public DriverManagerDataSource getDataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
// datasource set up
return dataSource;
}
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DriverManagerDataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
sessionBuilder.scanPackages("com.mypackages");
sessionBuilder.addProperties(getHibernateProperties());
return sessionBuilder.buildSessionFactory();
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.enable_lazy_load_no_trans", "true");
properties.put("hibernate.id.new_generator_mappings", "true");
return properties;
}
@Autowired
@Bean(name = "transactionManager")
public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
return transactionManager;
}
@Bean
public MyMainBean MyMainBean() {
MyMainBean bean = new MyMainBean();
bean.setService(myService());
bean.setValidator(myValidator());
return bean;
}
@Bean(name = "myService")
public MyService myService() {
MyService s = new MyService();
s.setDao1(myDao1());
s.setDao2(myDao2());
s.setCopyUtil(copyUtil());
return s;
}
@Bean
public MyDao1 myDao1() {
return new MyDao1();
}
@Bean
public MyDao2 myDao2() {
return new MyDao2();
}
@Bean
public CopyUtil copyUtil() {
return new CopyUtil();
}
@Bean
public ReportValidator reportValidator() {
ReportValidator validator = new ReportValidator();
validator.setService(myService());
return validator;
}
@Bean
public XMLValidator xmlValidator() {
XMLValidator validator = new XMLValidator();
validator.setService(myService());
return validator;
}
}
@クリスを、
それは本当に、これらのヒントは助ける良い願っていることです。すべての '@Service'クラスと' @Bean'がコンテキストに追加されます**ただ同じクラスにそれらを混ぜないでください!** - 私が通常どのように豆を繋ぐのか見たい場合は、この回答の最後にコードの私は通常、クラスを可能な限りクリーンに保ち、Configurationクラスで配線を行うために '@ Service'アノテーションを避けます。 – ESala
コンポーネントスキャンは、基本的にすべての私のパッケージcom.mycompanyをスキャンしているので、com.mycompany.servicesがスキャンされます。同じように私のDaos。 – Chris
別の質問 - 実際には2つのサービスがありますが、1つは2回しか作成されません。設定は設定ファイルと同じで、@ Serviceで注釈が付けられています。 2番目のサービスが重複していない理由は何ですか? – Chris