将Spring 4 websockets添加到现有的spring项目中

时间:2013-12-02 10:49:17

标签: spring spring-mvc configuration websocket spring-4

我的目的是为现有项目插入spring 4 websocket类。 这是spring websocket项目链接: https://github.com/rstoyanchev/spring-websocket-test

问题是我的项目使用xml配置文件,而websocket项目使用非常奇怪的java文件配置。

我的问题是有没有办法将这些配置文件从spring项目导入到我已经存在的(基于xml的)项目中?

例如,我的xmls正在web.xml中被引用,而在spring websocket项目中根本就没有web.xml。

P.S并非该项目中的所有配置类都是组件,这里有2个没有@Configuration anotations的类:

  import javax.servlet.ServletContext;
  import javax.servlet.ServletException;
 import javax.servlet.ServletRegistration.Dynamic;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[] { WebSecurityConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[] { WebConfig.class, WebSocketConfig.class };
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

@Override
protected void customizeRegistration(Dynamic registration) {
    registration.setInitParameter("dispatchOptionsRequest", "true");
}

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
}

}

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable() //TODO Refactor login form
        .authorizeRequests()
            .antMatchers("/assets/**").permitAll()
            .anyRequest().authenticated()
            .and()
        .logout()
            .logoutSuccessUrl("/login.html?logout")
            .logoutUrl("/logout.html")
            .permitAll()
            .and()
        .formLogin()
            .defaultSuccessUrl("/index.html")
            .loginPage("/login.html")
            .failureUrl("/login.html?error")
            .permitAll();
}


@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
        .inMemoryAuthentication()
            .withUser("fabrice").password("fab123").roles("USER").and()
            .withUser("paulson").password("bond").roles("ADMIN","USER");
}

那么它们会在我原来的扫描中被拾取吗?我应该如何整合它们呢?

谢谢!

2 个答案:

答案 0 :(得分:0)

Spring 4现已发布,因此您只需将其作为项目中的依赖项包含在内: http://search.maven.org/#artifactdetails%7Corg.springframework%7Cspring-framework-bom%7C4.0.0.RELEASE%7Cpom

答案 1 :(得分:0)

我已经编写了一个详细的教程/示例,介绍如何将Spring 4 WebSockets与Spring Security 3.2一起使用WebSockets“改编”常规的Spring MVC应用程序。点击here