從Spring MVC XML文件移動到javaconfig。我的數據庫XML文件真的讓我迷茫了
對于
<tx:annotation-driven transaction-manager='hibernateTransactionManager' />
注釋你的配置類,WebMVCConfig與
@EnableTransactionManagement
對于
<context:component-scan base-package='org.uftwf' />
將Package String添加到您的@ComponentScan字段basePackages
對于
<context:property-placeholder location='classpath:app.properties' />
注釋您的Configuration類
@PropertySource(value = 'classpath:app.properties')
然后做你的PropertyPlaceholderConfigurer @Bean方法static。
對于
<jee:jndi-lookup jndi-name='java:jboss/datasources/MysqLDB' expected-type='javax.sql.DataSource' />
我想你可以做
@Beanpublic DataSource dataSource() throws Exception { Context ctx = new InitialContext(); return (DataSource) ctx.lookup('java:jboss/datasources/MysqLDB');}
無需自動裝配會話工廠,只需調用您的@Bean方法
@Beanpublic HibernateTransactionManager transactionManager(){ HibernateTransactionManager htm = new HibernateTransactionManager(); htm.setSessionFactory(sessionFactory()); return htm;}解決方法
我從Spring MVC XML文件移動到javaconfig。我的數據庫XML文件真的讓我迷茫了。我不知道如何使Hibernate4工作以及我的JBossJNDI數據源工作。有人可以告訴我如何使javaconfig類像這種XML一樣工作。
這是我的database.xml:
?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 jndi-name='java:jboss/datasources/mySQLDB'expected-type='javax.sql.DataSource' /> <bean 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 class='org.springframework.orm.hibernate4.HibernateTransactionManager'><property name='sessionFactory' ref='sessionFactory' /> </bean></beans>
這是我的javaconfig類:
@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 flagshibernateProperties.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; }}
我認為我缺少的部分如下,但請多檢查我的課
<context:property-placeholder location='classpath:app.properties' /> <context:component-scan base-package='org.uftwf' /> <tx:annotation-driven transaction-manager='hibernateTransactionManager' /> <jee:jndi-lookup jndi-name='java:jboss/datasources/mySQLDB'expected-type='javax.sql.DataSource' />
相關文章:
1. mysql - 這條聯合sql語句哪里錯了2. webpack - vuejs+java前后臺分離實現及部署問題3. 使用uuid,并不能利用mysql的索引,有什么解決辦法?4. 網站在移動的環境下手機,pc打不開5. php - TP5的登錄驗證問題6. mysql - 我的myeclipse一直連顯示數據庫連接失敗,不知道為什么7. javascript - 微信小程序picker為什么會變成兩行?8. javascript - 微信h5發送圖文信息,部分設備點擊“發送”按鈕時沒反應,問題較難重現,如何能找到可能存在問題的點?9. linux pdo 安裝配置中 make 遇到問題,請大家指教!10. 在html文件的目錄下輸入代碼按回車后顯示這個,哪位大佬幫幫我 呀
