Spring Boot开发注意事项

一、普通类中获取Spring容器中的Bean

如下方式是无效的:前端

AppConfig appConfig = ContextLoader.getCurrentWebApplicationContext().getBean(AppConfig.class);

可以使用下面的工具类来获取:java

@Component public class SpringUtils implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (SpringUtils.applicationContext == null) { SpringUtils.applicationContext = applicationContext; } } public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 经过name获取 Bean.
     */
    public static Object getBean(String name) { return getApplicationContext().getBean(name); } /** * 经过class获取Bean.
     */
    public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } /** * 经过name,以及Clazz返回指定的Bean
     */
    public static <T> T getBean(String name, Class<T> clazz) { return getApplicationContext().getBean(name, clazz); } }

示例:app

AppConfig appConfig = SpringUtils.getBean(AppConfig.class);

 

二、Spring Boot默认不支持带.jsp后缀的URL

貌似.jspx也不能够。jsp

 

三、服务端java的long类型序列化到前端后,可能会损失精度

有两个解决办法:ide

(一)序列化时把long转换位String类型工具

(二)long类型的数值控制在15位之内spa

 

四、前端提交的时间戳数据,服务端用@RequestBody Map接收后,不能直接转换为Long类型

直接转换为Long类型可能会报错code

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

正确的作法是:blog

Number birthDateTime = (Number) dataMap.get("birthDate"); Date birthDate = new Date(birthDateTime.longValue());
相关文章
相关标签/搜索