从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. Android中如何根据不同java文件的功能来分类,例如分成activity adapter bean等等2. angular.js - angularJs使用iframe,网页内容自适应的问题3. docker镜像push报错4. angular.js - angular ui bootstrap 中文显示问题5. javascript - angular2中directive获取点击事件6. 数据库安全 - 在公网上部署mysql数据库,安全方面需要做到哪些注意事项7. php mysql_query()问题8. python2.7 - 在Eclipse开发Python,怎么去掉控制台输出的其他消息??9. python - django里GROUP BY 如何写这样的mysql语句?10. python - nginx为什么不能反代图片?
