2015-11-28 2 views
0

В весенний 4 приложения I, создавая два зерна, как показано ниже:Лучший способ, чтобы определить бобы в классе весной

<!-- schemaFactory--> 
    <bean id="schemaFact" class="javax.xml.validation.SchemaFactory" 
     factory-method="newInstance"> 
     <constructor-arg value="http://www.w3.org/2001/XMLSchema" /> 
    </bean> 

    <!-- schema --> 
    <bean id="schema" class="javax.xml.validation.Schema" 
     factory-bean="schemaFact" factory-method="newSchema"> 
     <constructor-arg value="classpath:/configs/sample.xsd" /> 
    </bean> 

Один генерирует схемы завода, а другой использует завод (для проверки XML против XSD) ,

И в коде:

public class example { 

    @Inject 
    private Schema aschema; 
    ...... 

    private validate(){ 
     Validator validator = aschema.newValidator(); 
     validator.validate(xmlFile); 
} 

}

Это прекрасно работает, но мне интересно, если это возможно, чтобы написать это spring.xml таким образом, что нам не нужно, чтобы определить заводскую боб отдельно (и имеют более простой spring.xml в конце). Как вы можете видеть, мне нужен только фасоль schema, который должен быть введен в моем классе example и schemaFact не нужен вообще.

+0

Почему бы не использовать Java конфигурации и падение XML? – Tunaki

ответ

0

Вложенные в форму зависимости зависят от того, используете ли вы их напрямую или нет.

Таким образом, даже если вы не используете SchemaFactory непосредственно в коде, но вводить его зависимость в другой пружинной фасоли, оба должны быть пружинные управляемые бобы

Вы можете рассмотреть возможность использования аннотаций, то вам не нужно весной файл вообще.

0

Это пример кода для создания bean-компонента в классе java. Может создавать любой bean-компонент здесь и авторизоваться в связанном классе.

Этот аннотаций дал нам большую поддержку для того чтобы достигнуть его ex- @Configuration

import java.util.Properties; 
import javax.persistence.SharedCacheMode; 

import........ 

@Configuration 
@ComponentScan(basePackages = {"<package>"}) 
@EnableTransactionManagement 
@PropertySources(value = {@PropertySource(value = {"<property file path>"})}) 
public class ModulesConfig { 

    private static final Logger log = LoggerFactory.getLogger(ModulesConfig.class); 

    @Autowired 
    private Environment environment; 

    @Bean(destroyMethod = "close") 
    public BoneCPDataSource getDataSource() { 
     BoneCPDataSource dataSource = new BoneCPDataSource(); 
     dataSource.setDriverClass(environment.getProperty("database.driver")); 
     dataSource.setJdbcUrl(environment.getProperty("database.url")); 
     dataSource.setUsername(environment.getProperty("database.username")); 
     dataSource.setPassword(environment.getProperty("database.password")); 
     dataSource.setIdleConnectionTestPeriodInMinutes(30); 
     dataSource.setMaxConnectionsPerPartition(5); 
     dataSource.setMinConnectionsPerPartition(2); 
     dataSource.setPartitionCount(3); 
     dataSource.setAcquireIncrement(2); 
     dataSource.setStatementsCacheSize(100); 

     return dataSource; 
    } 

    @Bean 
    @Primary 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 

     Properties jpaProperties = new Properties(); 
     jpaProperties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); 
     jpaProperties.setProperty("hibernate.showSql", "false"); 

     LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); 
     em.setDataSource(getDataSource()); 
     em.setPersistenceUnitName("entityManagerFactory"); 
     em.setPackagesToScan("<packages>"); 
     em.setJpaVendorAdapter(vendorAdapter); 
     em.setJpaProperties(jpaProperties); 
     em.setSharedCacheMode(SharedCacheMode.ENABLE_SELECTIVE); 

     return em; 
    } 

    @Bean(name = "transactionManager1") 
    @Primary 
    public JpaTransactionManager getTransactionManager() { 
     JpaTransactionManager transactionManager = new JpaTransactionManager(); 
     transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); 

     return transactionManager; 
    } 

    @Bean(name = "transactionManager2") 
    public JpaTransactionManager getTransactionManager2() { 
     JpaTransactionManager transactionManager = new JpaTransactionManager(); 
     transactionManager.setEntityManagerFactory(entityManagerFactory2().getObject()); 

     return transactionManager; 
    } 

    @Bean 
    @Qualifier("VoucherServiceMarshaller") 
    public Jaxb2Marshaller getVoucherServiceMarshaller() { 
     Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); 
     marshaller.setContextPath(environment.getProperty("voucher.service.marshaller.contextPath")); 

     return marshaller; 
    } 

    @Bean 
    @Qualifier("VoucherServiceTemplate") 
    public WebServiceTemplate getVoucherServiceTemplate() { 
     WebServiceTemplate template = new WebServiceTemplate(getVoucherServiceMarshaller()); 
     template.setDefaultUri(environment.getProperty("voucher.service.defaultUri")); 

     return template; 
    } 

    @Bean 
    public VoucherServiceProxy getVoucherServiceProxy() { 
     VoucherServiceProxy voucherServiceProxy = new VoucherServiceProxy(); 

     return voucherServiceProxy; 
    } 

    @Bean 
    public MessageSource messageSource() { 
     ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
     messageSource.setBasename("classpath:messages"); 
     messageSource.setDefaultEncoding("UTF-8"); 

     return messageSource; 
    } 

    @Bean 
     public JavaMailSender javaMailSender() { 
      JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
      Properties mailProperties = new Properties(); 

      mailProperties.put("mail.smtp.host", environment.getProperty("mail.smtp.host")); 
      mailProperties.put("mail.smtp.socketFactory.port", environment.getProperty("mail.smtp.socketFactory.port")); 
      mailProperties.put("mail.smtp.socketFactory.class", environment.getProperty("mail.smtp.socketFactory.class")); 
      mailProperties.put("mail.smtp.auth", environment.getProperty("mail.smtp.auth")); 

      mailSender.setJavaMailProperties(mailProperties); 

      mailSender.setUsername(environment.getProperty("mail.username")); 
      mailSender.setPassword(environment.getProperty("mail.password")); 

      return mailSender; 
     } 


    @Bean 
    public ChargingGatewayServiceProxy getChargingGatewayServiceProxy() { 
     ChargingGatewayServiceProxy chargingGatewayServiceProxy = new ChargingGatewayServiceProxy(); 

     return chargingGatewayServiceProxy; 
    } 

    @Bean 
    @Qualifier("ChargingGatewayServiceMarshaller") 
    public Jaxb2Marshaller getChargingGatewayServiceMarshaller() { 
     Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); 
     marshaller.setContextPath(environment.getProperty("cg.service.marshaller.contextPath1")); 

     return marshaller; 
    } 

    @Bean 
    @Qualifier("ChargingGatewayServiceTemplate") 
    public WebServiceTemplate getChargingGatewayServiceTemplate() { 
     WebServiceTemplate template = new WebServiceTemplate(getChargingGatewayServiceMarshaller()); 
     template.setDefaultUri(environment.getProperty("cg.service.url")); 
     template.setMessageSender(getMessageSender()); 

     return template; 
    } 

    @Bean 
    public HttpComponentsMessageSender getMessageSender() { 
     HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender(); 
     httpComponentsMessageSender.setConnectionTimeout(Integer.parseInt(environment.getProperty("cg.connection.timeout"))); 
     httpComponentsMessageSender.setReadTimeout(Integer.parseInt(environment.getProperty("cg.read.timeout"))); 

     return httpComponentsMessageSender; 
    } 

    @Bean 
    public RestTemplate restTemplate() { 
     return new RestTemplate(clientHttpRequestFactory()); 
    } 

    private ClientHttpRequestFactory clientHttpRequestFactory() { 
     HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); 
     factory.setReadTimeout(50000); 
     factory.setConnectTimeout(50000); 
     return factory; 
    } 

    @Bean 
    public Cache cacheTemp() { 
     net.sf.ehcache.CacheManager cm = net.sf.ehcache.CacheManager.create().getInstance(); 

     cm.addCache("cacheTemp"); 
     Cache cache = cm.getCache("cacheTemp"); 

     return cache; 
    } 

    @Bean 
    public Cache cacheActive() { 
     net.sf.ehcache.CacheManager cm = net.sf.ehcache.CacheManager.create().getInstance(); 

     cm.addCache("cacheActive"); 
     Cache cache = cm.getCache("cacheActive"); 

     return cache; 
    } 

    @Bean 
    public Cache cache() { 
     net.sf.ehcache.CacheManager cm = net.sf.ehcache.CacheManager.create().getInstance(); 

     cm.addCache("cache"); 
     Cache cache = cm.getCache("cache"); 

     return cache; 
    } 

} 
Смежные вопросы