2013-03-15 5 views
6

私はSpring MVC XMLファイルからjavaconfigに移動します。私は本当に私のデータベースXMLファイルで失われています。私はHibernate4を動作させる方法と私のJBoss JNDIデータソースを動作させる方法を知らない。私が思うSpring MVC XMLファイルからjavaconfigに移動します。データベースXMLファイルで本当に失われています

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages= {"org.uftwf.inquiry"}) 
@ImportResource("/WEB-INF/spring/root-config.xml") 
public class WebMVCConfig extends WebMvcConfigurerAdapter { 

    private static final String MESSAGE_SOURCE = "/WEB-INF/classes/messages"; 

    private static final Logger logger = LoggerFactory.getLogger(WebMVCConfig.class); 


    @Value("${jdbc.driverClassName}") 
    private String driverClassName; 

    @Value("${jdbc.url}") 
    private String url; 

    @Value("${jdbc.username}") 
    private String username; 

    @Value("${jdbc.password}") 
    private String password; 

    @Value("${hibernate.dialect}") 
    private String hibernateDialect; 

    @Value("${hibernate.show_sql}") 
    private String hibernateShowSql; 

    @Value("${hibernate.hbm2ddl.auto}") 
    private String hibernateHbm2ddlAuto; 

    @Bean 
    public PropertyPlaceholderConfigurer getPropertyPlaceholderConfigurer() 
    { 
     PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
     ppc.setLocation(new ClassPathResource("application.properties")); 
     ppc.setIgnoreUnresolvablePlaceholders(true); 
     return ppc; 
    } 

    @Bean() 
    public DataSource getDataSource() 
    { 
     DriverManagerDataSource ds = new DriverManagerDataSource(); 
     ds.setDriverClassName(driverClassName); 
     ds.setUrl(url); 
     ds.setUsername(username); 
     ds.setPassword(password); 
     return ds; 
    } 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() 
    { 

     LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean(); 
     factoryBean.setDataSource(getDataSource()); 
     factoryBean.setHibernateProperties(getHibernateProperties()); 
     factoryBean.setPackagesToScan("org.uftwf.inquiry.model"); 

     return factoryBean; 
    } 

    @Bean 
    public Properties getHibernateProperties() 
    { 
     Properties hibernateProperties = new Properties(); 

     hibernateProperties.setProperty("hibernate.dialect", hibernateDialect); 
     //hibernateProperties.setProperty("hibernate.show_sql", "true"); 
     //hibernateProperties.setProperty("hibernate.format_sql", "true"); 
     hibernateProperties.setProperty("hibernate.hbm2ddl.auto", "update"); 
     hibernateProperties.setProperty("javax.persistence.validation.mode", "none"); 

     //Audit History flags 
     hibernateProperties.setProperty("org.hibernate.envers.store_data_at_delete", "true"); 
     hibernateProperties.setProperty("org.hibernate.envers.global_with_modified_flag", "true"); 

     return hibernateProperties; 
    } 

    @Bean 
    @Autowired 
    public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) 
    { 
     HibernateTransactionManager htm = new HibernateTransactionManager(); 
     htm.setSessionFactory(sessionFactory); 
     return htm; 
    } 

    @Bean 
    public ViewResolver resolver() { 
     UrlBasedViewResolver url = new UrlBasedViewResolver(); 
     url.setPrefix("/WEB-INF/view/"); 
     url.setViewClass(JstlView.class); 
     url.setSuffix(".jsp"); 
     return url; 
    } 


    @Bean(name = "messageSource") 
    public MessageSource configureMessageSource() { 
     logger.debug("setting up message source"); 
     ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
     messageSource.setBasename(MESSAGE_SOURCE); 
     messageSource.setCacheSeconds(5); 
     messageSource.setDefaultEncoding("UTF-8"); 
     return messageSource; 
    } 

    @Bean 
    public LocaleResolver localeResolver() { 
     SessionLocaleResolver lr = new SessionLocaleResolver(); 
     lr.setDefaultLocale(Locale.ENGLISH); 
     return lr; 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     logger.debug("setting up resource handlers"); 
     registry.addResourceHandler("/resources/").addResourceLocations("/resources/**"); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     logger.debug("configureDefaultServletHandling"); 
     configurer.enable(); 
    } 

    @Override 
    public void addInterceptors(final InterceptorRegistry registry) { 
     registry.addInterceptor(new LocaleChangeInterceptor()); 
    } 

    @Bean 
    public SimpleMappingExceptionResolver simpleMappingExceptionResolver() { 
     SimpleMappingExceptionResolver b = new SimpleMappingExceptionResolver(); 

     Properties mappings = new Properties(); 
     mappings.put("org.springframework.web.servlet.PageNotFound", "p404"); 
     mappings.put("org.springframework.dao.DataAccessException", "dataAccessFailure"); 
     mappings.put("org.springframework.transaction.TransactionException", "dataAccessFailure"); 
     b.setExceptionMappings(mappings); 
     return b; 
    } 

    @Bean 
    public RequestTrackerConfig requestTrackerConfig() 
    { 
     RequestTrackerConfig tr = new RequestTrackerConfig(); 
     tr.setPassword("Waiting#$"); 
     tr.setUrl("https://uftwfrt01-dev.uftmasterad.org/REST/1.0"); 
     tr.setUser("root"); 

     return tr; 
    } 


} 

:ここ

?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
    xmlns:jee="http://www.springframework.org/schema/jee" 

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd 
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context-3.1.xsd 
          http://www.springframework.org/schema/tx 
          http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
          http://www.springframework.org/schema/jdbc 
          http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
          http://www.springframework.org/schema/jee 
          http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> 


    <context:property-placeholder location="classpath:app.properties" /> 

    <context:component-scan base-package="org.uftwf" /> 

    <tx:annotation-driven transaction-manager="hibernateTransactionManager" /> 

    <jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/mySQLDB" 
     expected-type="javax.sql.DataSource" /> 

    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>org.uftwf.inquiry.model.MemberInquiryInformation</value> 

      </list> 
     </property> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop> 
       <prop key="format_sql">${format_sql}</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="hibernateTransactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
</beans> 

は私javaconfigクラスです:誰かがここに

は私database.xml ..ですどのようにこのXMLのようなjavaconfigクラスの仕事を作る方法を教えてくださいすることができます私が紛失している部分は次のとおりですが、私のクラスをオーバーチェックしてください。

<context:property-placeholder location="classpath:app.properties" /> 

    <context:component-scan base-package="org.uftwf" /> 

    <tx:annotation-driven transaction-manager="hibernateTransactionManager" /> 

    <jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/mySQLDB" 
     expected-type="javax.sql.DataSource" /> 

答えて

35

<tx:annotation-driven transaction-manager="hibernateTransactionManager" /> 

についてあなたの @ComponentScanフィールド basePackages

にパッケージ文字列を追加

<context:component-scan base-package="org.uftwf" /> 

について

@EnableTransactionManagement 

を使用してConfigurationクラス、WebMVCConfigを、注釈を付けます0

<context:property-placeholder location="classpath:app.properties" /> 

@PropertySource(value = "classpath:app.properties") 

であなたのConfigurationクラスに注釈を付けると、あなたのPropertyPlaceholderConfigurer@Bean方法staticを作ります。

<jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/mySQLDB" 
    expected-type="javax.sql.DataSource" /> 

I think you can do

@Bean 
public DataSource dataSource() throws Exception { 
    Context ctx = new InitialContext(); 
    return (DataSource) ctx.lookup("java:jboss/datasources/mySQLDB"); 
} 

の代わりにあなたのセッションファクトリをオートワイヤリングするために、ちょうど

@Bean 
public HibernateTransactionManager transactionManager() 
{ 
    HibernateTransactionManager htm = new HibernateTransactionManager(); 
    htm.setSessionFactory(sessionFactory()); 
    return htm; 
} 
+0

そのまだ私を与えるのSessionFactoryは – SJS

+0

をAutowiredする傾けることがわかり、あなたの@Beanメソッドを呼び出します編集。あなたができることは、セッションファクトリを作成するBeanメソッドを呼び出すことです。 Beanは、あなたのBeanメソッドにいくつかのクールなプロキシ処理を行います(つまり、2つのBeanがセッションファクトリを必要とするなど)。何回呼び出しても、常に同じインスタンスが返されます。 –

+0

これはjava.lang.NoClassDefFoundErrorです:org/hibernate/engine/SessionFactoryImplementor – SJS

関連する問題