您的位置:首页技术文章
文章详情页

从Spring MVC XML文件移动到javaconfig。我的数据库XML文件真的让我迷茫了

浏览:20日期:2024-05-06 09:53:57
如何解决从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' />

标签: java
相关文章: