Java Configuration kullanarak Spring MVC kullanarak bir RESTful web hizmeti yazıyorum. Yapılandırma dosyam aşağıda. Sorunum şu: Tek bir örnek yerine 2 "myService" fasulyesinin oluşturulduğunu keşfettim. Emin değilim neden? Yapılandırmayı yalnızca bir tane oluşturmak için nasıl ayarlayabilirim?Yay Yapılandırma, bir tane yerine iki çekirdek oluşturuyor
Beni doğru yöne yönlendiren var mı? Teşekkürler! fasulye kablolama ve tek sonuçlanan kez myService()
fonksiyonunu diyoruz, sonra da diğer myService()
aramalar sonucu geçmesi gerekirken
İşte benim yapılandırma sınıfı var .... Aslında
@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;
}
}
@Chris;
Gerçekten, bu ipuçları yardımcı iyi umut olmasıdır. Tüm '@ Servis' sınıfları ve' @ Beans'ler içeriğe eklenecektir, sadece ** aynı sınıf için bunları karıştırmayın! ** - Genellikle fasulyeyi nasıl bağladığımı görmek isterseniz, bir örnek ekledim Bu cevabın sonunda kod. Sınıflarımın olabildiğince temiz olmasını ve Yapılandırma sınıflarındaki kablolamayı yapmak için genellikle 'Servis' ek açıklamalarından kaçınıyorum. – ESala
Bileşen taraması temel olarak tüm paketlerimi tarar, şirketimle birlikte - com.mycompany.services taranır. Aynı şekilde Daos'um için. – Chris
başka bir soru - Aslında 2 servisim var, ancak sadece iki tane oluşturuluyor. Kurulum, Yapılandırma dosyasında aynı olmasına ve @ Servis ile açıklamalı olmasına rağmen. 2. hizmetin neden çoğaltılmadığı hakkında bir fikrin var mı? – Chris