Spring Boot开发注意事项

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

以下方式是无效的:

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

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

@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);
    }
}

示例:

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

 

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

貌似.jspx也不可以。

 

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

有两个解决办法:

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

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

 

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

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

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

正确的做法是:

Number birthDateTime = (Number) dataMap.get("birthDate");
Date birthDate = new Date(birthDateTime.longValue());

 

posted @ 2018-07-14 09:32  妙音软件  阅读(490)  评论(0)    收藏  举报