Spring鸡毛蒜皮

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.

转载于:https://my.oschina.net/CasparLi/blog/1531290

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值