欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot学习收获

程序员文章站 2022-05-19 22:14:17
...

自己一些总结


修改网站小图标

1、在application.properties中配:spring.mvc.favicon.enabled = false
2、网站图片命名为favicon.ico;
3、将favicon.ico放在resources/static目录下;
4、ok,结束ヾ(◍°∇°◍)ノ゙

启动彩蛋

springboot项目启动总会打印一下内容,想要更换怎么办?

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::        (v1.4.0.RELEASE)

1、在resource目录下面放入一个banner.txt文件,Spring Boot启动项目的时候就会优先启动这个文件中的内容;
2、在里面存放要打印的内容;
3、文件中:Spring Boot提供了一个枚举类AnsiColor,通过${AnsiColor.BRIGHT_YELLOW}来控制文件中字符的颜色,${spring-boot.version}这个是springboot的版本号;
4、ok啦啦啦…

额外

${application.version}           这个是MANIFEST.MF文件中的版本号  
${application.formatted-version} 这个是上面的的版本号前面加v后上括号  
${spring-boot.version}           这个是springboot的版本号  
${spring-boot.formatted-version} 同上

统一异常处理

404等错误


import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;

@Configuration
public class WebConfiguration {

    @Bean
    public EmbeddedServletContainerCustomizer proEmbeddedServletContainerCustomizer() {
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                //如果是静态页面的异常处理,如404错误,此方式不能传递异常具体信息
                //错误页面需要放在Spring Boot web应用的static内容目录下,它的默认位置是:src/main/resources/static,
                container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404.action"));
                container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500.action"));
            }
        };
    }
}
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;

import javax.servlet.http.HttpServletRequest;

@Controller
public class ErrorController {

    @RequestMapping(value = "/error/404.action")
    @ResponseStatus( HttpStatus.OK )
    public String pageNotFound(HttpServletRequest req, HttpServletRequest response) {
        req.setAttribute("errorMsg", "哎呀,被外星人抓走了!");
        return "error/error";
    }

    @RequestMapping(value = "/error/500.action")
    @ResponseStatus( HttpStatus.OK )
    public String error(HttpServletRequest req, HttpServletRequest response) {
        req.setAttribute("errorMsg", "受伤啦啦啦!");
        return "error/error";
    }
}

json统一异常处理

1、参考:http://blog.didispace.com/springbootexception/
2、在aop中对调用方法进行try catch,出现异常返回

乱码

再谈Spring Boot中的乱码和编码问题:https://www.huangyunkun.com/2016/11/05/spring-boot-encoding-with-utf8/

邮件发送

参考:http://blog.didispace.com/springbootmailsender/

禁用依赖

参考:http://blog.didispace.com/spring-boot-disable-autoconfig/

接口参数校验

Hibernate 的 Validator 做传入参数的校验。
RestFul Api 接口参数校验及前后端交互校验 https://zhuanlan.zhihu.com/p/28399903

事务

@SpringBootApplication //等同于 @Configuration @EnableAutoConfiguration @ComponentScan
@EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />
@MapperScan("com.hfy.db.mapper")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

jar和dll

maven安装本地jar

maven安装本地jar
mvn install:install-file -Dfile=C:/Users/hfy/Desktop/sigar-1.6.5.132.jar -DgroupId=org.hyperic -DartifactId=sigar -Dversion=1.6.5.132 -Dpackaging=jar

Spring Boot引用本地jar包
springboot加载dll

插件

1、spring-boot-devtools
maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器

多数据源

springboot + mybatis + 多数据源 http://www.cnblogs.com/java-zhao/p/5413845.html

后台配置

windows

windows平台下,jar包开机自启动好配置,可会有命令行窗口运行在界面上,容易不小心关闭。
1、wrapper可以实现
2、使用AlwaysUp软件

linux

看文章:linux相关知识
参考:
  http://blog.didispace.com/spring-boot-run-backend/
  Wrapper配置详解及高级应用

access-origin

看本人文章:ajax常见问题

模板引擎

来自:http://www.cnblogs.com/petermsdn/archive/2011/05/06/2039178.html

jsp是大家最熟悉的技术
  优点:
    1、功能强大,可以写java代码
    2、支持jsp标签(jsp tag)
    3、支持表达式语言(el)
    4、官方标准,用户群广,丰富的第三方jsp标签库
    5、性能良好。jsp编译成class文件执行,有很好的性能表现
  缺点:
    jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

freemarker
  优点:
    1、不能编写java代码,可以实现严格的mvc分离
    2、性能非常不错
    3、对jsp标签支持良好
    4、内置大量常用功能,使用非常方便
    5、宏定义(类似jsp标签)非常方便
    6、使用表达式语言
  缺点:
    1、不是官方标准
    2、用户群体和第三方标签库没有jsp多

session过期,跳出iframe

使用的AdminLTE,左边菜单栏不刷新,只刷新内容区域。

session过期处理,跳转登录,结果登录总在content区域显示,按网上的处理方式:在登录页面<head></head>中添加如下代码:

<script type="text/javascript">
	if (window != top)
	top.location.href = location.href;
</script>

然而并没有什么用。最后啦,按以下方式处理:

var $mainLoader = $('#main-loader');
$mainLoader.load(url,function(){
  //session过期跳转到登陆页
  $mainLoader.find('form button.loginBtn').length!=0 && (window.location.href = contextPath+'/login');
});

参考

参考链接:http://www.jianshu.com/p/692be2b00e6b