I am at a loss moving from Spring XML to Java-config

hibernate, java, spring, spring-mvc, spring-security

Solution

As has been pointed out in comments, Spring security isn't supported in the java config yet.

I converted a basic Spring mvc webapp to full (or as much as possible at the time) code configuration a little while ago.

You can check out the whole project on github, that should all work out of the box, and also uses inializr/bootstrap stuff for web/html5 good practice too.

My code config files are all here

As you can see for my security class, its kindof a cheat!

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

/**
 * Spring doesn't yet support pure java configuration of spring security
 * so this will just have to import the old fashioned xml file.
 * 
 * @author rob
 *
 */
@Configuration
@ImportResource("classpath:META-INF/spring/security.xml")
public class SecurityConfiguration {}

UPDATE

Since Spring-security 3.2 you have been able to convert Spring-security to Java based code config. I have written it up on my blog here: http://automateddeveloper.blogspot.co.uk/2014/02/spring-4-xml-to-annotation-configuration.html

(includes source code & full spring mvc project using Spring 4)

Problem

I have a `spring-secuiry.xml` and a `database.xml` that I need to move into the Java-config but I don't know how.. Here is my `sercuirty.xml`: ``` <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> <global-method-security pre-post-annotations="enabled" /> <http use-expressions="true"> <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/mrequest**" /> <intercept-url pattern='/*' access='permitAll' /> <form-login default-target-url="/visit" /> <logout logout-success-url="/" /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="cpilling04@aol.com.dev" password="testing" authorities="ROLE_VERIFIED_MEMBER" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans> ``` and here is my `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"> <!-- Last changed: $LastChangedDate: 2012-11-19 08:53:13 -0500 (Mon, 19 Nov 2012) $ @author $Author: johnathan.smith@uftwf.org $ @version $Revision: 829 $ --> <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> ``` Can someone please show me how to change the following Java-config to have them: ``` @Configuration @EnableWebMvc @ComponentScan(basePackages= {"com.johnathanmsmith.mvc.web"}) public class WebMVCConfig extends WebMvcConfigurerAdapter { private static final String MESSAGE_SOURCE = "/WEB-INF/classes/messages"; private static final Logger logger = LoggerFactory.getLogger(WebMVCConfig.class); @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; } } ```

Original source

Related problems