Spring MVC 4快速入门Maven原型已改进

Spring Boot使Spring入门非常容易。 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣。 几年前,我创建了一个原型(早于Spring Boot),简化了引导Spring Web应用程序的过程。 尽管Spring Boot已经上市了一段时间,但是Spring MVC 4 Quickstart Maven Archetype在GitHub上仍然很受欢迎。 我希望最近有了一些补充,它会更好。

Java 8

我已经决定将目标平台切换为Java8。在生成的项目中还没有特定的Java 8代码,但是我相信所有新的Spring项目都应该从Java 8开始。Java 8的采用超出了预期。 看看: https : //typesafe.com/company/news/survey-of-more-than-3000-developers-reveals-java-8-adoption-ahead-of-previous-forecasts

介绍Spring IO平台

Spring IO平台将核心Spring API整合到了一个用于现代应用程序的紧密结合的平台中。 。 主要优势在于,它通过提供Spring项目的版本以及经过测试并已知可以协同工作的依赖项,简化了依赖项管理。

以前,所有依赖项都是手动指定的,解决版本冲突需要一些时间。 使用Spring IO平台,我们必须仅更改平台版本(当然还要注意平台外部的依赖性):

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>${io.spring.platform-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

现在可以使用依赖项,而无需在POM中指定version

<!-- Spring -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
</dependency>
<!-- Security -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
</dependency>

Java安全性配置

当我第一次创建原型时,无法使用Java代码配置Spring Security。 但是现在是了,所以我将XML配置迁移到Java配置。

SecurityConfig现在从WebSecurityConfigurerAdapter扩展,并用@Configuration@EnableWebMvcSecurity批注标记。

安全配置详细信息

限制访问除以下以外的每个URL

XML配置:

<security:intercept-url pattern="/" access="permitAll" />
<security:intercept-url pattern="/resources/**" access="permitAll" />
<security:intercept-url pattern="/signup" access="permitAll" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />

成为:

http
    .authorizeRequests()
        .antMatchers("/", "/resources/**", "/signup").permitAll()
        .anyRequest().authenticated()

登录/注销

XML配置:

<security:form-login login-page="/signin" authentication-failure-url="/signin?error=1"/>
<security:logout logout-url="/logout" />

成为:

http
    .formLogin()
        .loginPage("/signin")
        .permitAll()
        .failureUrl("/signin?error=1")
        .loginProcessingUrl("/authenticate")
        .and()
    .logout()
        .logoutUrl("/logout")
        .permitAll()
        .logoutSuccessUrl("/signin?logout");

记住账号

XML配置:

<security:remember-me services-ref="rememberMeServices" key="remember-me-key"/>

成为:

http
    .rememberMe()
        .rememberMeServices(rememberMeServices())
        .key("remember-me-key");

CSRF已启用用于生产而已禁用以进行测试

当前默认情况下启用CSRF,因此不需要其他配置。 但是在进行集成测试时,我想确保CSRF被禁用。 我找不到执行此操作的好方法。 我从传递给CsrfConfigurer CSRF保护匹配器开始,但是最后得到了很多我不希望在SecurityConfiguration拥有的代码。 我最终得到了一个NoCsrfSecurityConfig ,它从原始SecurityConfig扩展并禁用了CSRF:

@Configuration
public class NoCsrfSecurityConfig extends SecurityConfig {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.csrf().disable();
    }
}

连接池

HikariCP现在用作生成的应用程序中的默认连接池。 使用默认配置:

@Bean
public DataSource configureDataSource() {
    HikariConfig config = new HikariConfig();
    config.setDriverClassName(driver);
    config.setJdbcUrl(url);
    config.setUsername(username);
    config.setPassword(password);
    config.addDataSourceProperty("cachePrepStmts", "true");
    config.addDataSourceProperty("prepStmtCacheSize", "250");
    config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    config.addDataSourceProperty("useServerPrepStmts", "true");

    return new HikariDataSource(config);
}

还有更多

Spring MVC 4快速入门Maven原型还远远没有完成。 由于Spring平台涉及原型,因此必须进行相应调整。 我很期待听到可以做些什么来使其成为一个更好的项目。 如果有想法或建议,请在GitHub上发表评论或创建问题。

参考文献

翻译自: https://www.javacodegeeks.com/2014/12/spring-mvc-4-quickstart-maven-archetype-improved.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven是一个项目管理工具,它可以帮助我们管理Java项目的依赖关系、构建过程和项目文档等。Spring MVCSpring框架中的一个模块,用于开发基于MVC(Model-View-Controller)架构的Web应用程序。 要在Maven项目中使用Spring MVC,首先需要在项目的pom.xml文件中添加Spring MVC的依赖。可以通过以下方式添加依赖: ```xml <dependencies> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>版本号</version> </dependency> <!-- 其他依赖 --> </dependencies> ``` 在添加了Spring MVC的依赖后,可以开始编写Spring MVC的配置文件和控制器类。配置文件通常是一个XML文件,用于配置Spring MVC的相关设置,例如URL映射、视图解析器等。控制器类负责处理请求并返回相应的视图。 以下是一个简单的Spring MVC配置文件示例(springmvc-servlet.xml): ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启Spring MVC注解支持 --> <mvc:annotation-driven/> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 其他配置 --> </beans> ``` 同时,还需要编写一个控制器类来处理请求。控制器类使用注解来标识请求映射和处理方法。以下是一个简单的控制器类示例: ```java @Controller public class HelloWorldController { @RequestMapping("/hello") public String helloWorld(Model model) { model.addAttribute("message", "Hello, World!"); return "hello"; } } ``` 在上述示例中,`@Controller`注解表示该类是一个控制器类,`@RequestMapping`注解用于指定请求的URL路径,`Model`参数用于传递数据给视图。 以上是关于使用Maven依赖Spring MVC的简要介绍,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值