文档章节

Spring鸡毛蒜皮

CasparLi
 CasparLi
发布于 2017/09/07 14:56
字数 390
阅读 23
收藏 0

SpringMVC

ModelAndView

  • 在 controller 中获取 session 的属性.
@Controller
@SessionAttributes("adminUser") // 申明需要从 session 中取得的属性名.
public class ConfigController extends BaseController {

    @RequestMapping(value = "/admin/config/create", method = POST, produces = "application/json;charset=utf-8")
    @ResponseBody
    public String createX1Config(@ModelAttribute("adminUser") AdminUser admin,String... theOtherParams){
        // 通过 @ModelAttribute("adminUser") 注解已经注入了需要的属性.
    }
}

Configuration

自定义类型转换器

目标: 将配置文件中的日期字符串转换成 LocalDate 对象
原文: Spring Boot - Custom Type Conversion with @ConfigurationProperties src/main/resources/application.properties

spring.main.banner-mode=off 
spring.main.logStartupInfo=false
app.exit-on-errors=true
app.trade-start-date=03-25-2016

配置类

@Component
@ConfigurationProperties("app")
public class MyAppProperties {
  private boolean exitOnErrors;
  private LocalDate tradeStartDate;
  // do something
}

自定义转换器
本例将提供一个客制化的转换器来实现我们想要的转换. 该转换器应该注册为 Spring Bean,并且还应该使用 Qualifier 注释 @ConfigurationPropertiesBinding 进行注释. ConfigurationPropertiesBindingPostProcessor 负责将所有外部属性绑定到用 @ConfigurationProperties 注释的bean. 此 BeanPostProcessor 还检测用 @ConfigurationPropertiesBinding 进行类型转换的自定义转换器(除默认转换器外)

@Component
@ConfigurationPropertiesBinding
public class LocalDateConverter implements Converter<String, LocalDate> {
  @Override
  public LocalDate convert(String source) {
      if(source==null){
          return null;
      }
      return LocalDate.parse(source, DateTimeFormatter.ofPattern("MM-dd-yyyy"));
  }
}

Main class

@SpringBootApplication
public class ExampleMain {

  public static void main(String[] args) throws InterruptedException {
      ConfigurableApplicationContext context = SpringApplication.run(ExampleMain.class, args);
      MyAppProperties bean = context.getBean(MyAppProperties.class);
      System.out.println(bean);
  }
}

兼容性问题

  • Spring3 + JDK1.8
        需要编译成 JDK1.7 或者不用 lambda表达式, stream 等 1.8 的新特性. 否则会报错.
  • SpringBoot + JDK1.6
    使用 1.2.1.RELEASE 可适配 JDK1.6 之后的版本对 JDK1.6 的支持不佳 不推荐使用. 同时需要修改 tomcat 的版本到 7.0.59. spring-boot-starter-jdbc 中添加 exclusion 排除默认的 tomcat-jdbc 8.xx.

© 著作权归作者所有

共有 人打赏支持
CasparLi
粉丝 15
博文 132
码字总数 26994
作品 0
成都
程序员
私信 提问
Spring Cloud Greenwich.RC1 发布

Spring Cloud Greenwich 首个 RC 版发布了,这个里程碑版本与 Spring Boot 2.1.1.RELEASE 兼容,各个项目都进行了更新,以实现与 Java 11 的兼容性。可点此查看在该版本中,分配给这个版本的...

局长
2018/12/17
0
0
Spring Cloud Greenwich.M3 版本发布

Spring Cloud Function 的第三个 Milestone 3 已发布,该版本的各个模块现可在 Spring Milestone 存储库中使用。 主要更改 此版本与 Spring Boot 2.1.0.RELEASE 兼容,并已对 Java 11 兼容性...

淡漠悠然
2018/11/22
1K
0
Spring Cloud Finchley 正式发布,兼容 Spring Boot 2.0.x

经过数个前期测试版本,Spring Cloud Finchley 终于迎来了正式版本: 下载地址 发行说明 显著变化: 与 Spring Boot 2.0.x 兼容 不支持 Spring Boot 1.5.x 最低要求 Java 8 新增 Spring Clo...

淡漠悠然
2018/06/20
7.9K
22
Spring Cloud Edgware.SR5 发布,大量 bug 修复

Spring Cloud Edgware SR5(Service Release 5)已发布,可在 Maven Central 下载该版本。 主要更新 Spring Cloud Commons Bug fixes Spring Cloud Config Documentation and Bug fixes Spr......

淡漠悠然
2018/10/18
1K
0
Spring IO Platform 1.1.5/2.0.1 发布

Spring IO Platform 1.1.5/2.0.1 发布,现已提供在 repo.spring.io 和 Maven Central。Spring IO Platform 1.1.5 是个维护版本,主要包括最新的维护版本: Spring Batch 3.0.6.RELEASE Sprin......

oschina
2015/12/19
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

Ruby中的继承、原型、面向对象、访问域

先有类还是先有对象 从鸡蛋悖论解决可以悟到一个道理,不要从常识上假设非此即彼和绝对静止。 Ruby中的类和对象正是这么个东西 我们创建一个类,那它就是Class这个对象的实例,而Class,于是...

可数局部基
43分钟前
3
0
什么时候使用字节流、什么时候使用字符流,二者的区别

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 InputStream 和OutputStream,...

watermelon11
今天
6
0
Alpakka Kafka,反应式Kafka客户端

Alpakka Kafka 是一个要用于 Java 和 Scala 语言的开源的流感知和反应式集成数据线项目。它建立在 Akka Stream之上,提供了 DSL 来支持反应式和流式编程,内置回压功能。Akka Streams 是 Re...

羊八井
今天
5
0
PHP7源码编译安装详解

$ yum groupinstall "development tools"$ yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype \freetype-devel libpng libpng-devel libxml2 ......

问题终结者
今天
5
0
Django学习笔记-从创建虚拟环境到启用服务

1 前置条件 windows系统下,目前已经完成anaconda3或miniconda3的安装,这也意味着已经完成了python3的安装。 2 创建虚拟环境 1、通过Anaconda Prompt,使用conda命令创建虚拟环境(base) e...

davidwbnu
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部