Skip to content

Latest commit

 

History

History
182 lines (126 loc) · 6.27 KB

README.md

File metadata and controls

182 lines (126 loc) · 6.27 KB

SpringBootGroup

SpringBoot Learning

bug fix

IDEA 报错 Package 'java.util' is declared in module 'java.base', which is not in the module graph 解决:重启idea,清除缓存
解决方案参考

SpringBoot报错:java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use@ContextConfiguration with your tests...
原因:目录路径不一致一致导致 解决:test类和java类的路径都放在同一包名路径下 xx.xx.xx.test, xx.xx.xx.dao
解决方案参考

vue获取到数据但无法渲染到页面
原因:javascript 匿名函数造成的语法问题
问题代码:axios.post(...).then(function(response){...})
解决: axios.post(...).then(response=>{...})
体会:抄代码一定要谨慎,这里的response是响应
提问: function(a){} 和a=>{},这两个a意义一样吗:按理说一样,但实际又不一样,真是奇怪 解决方案参考

vue模板字符串中的@click方法无效
原因:模板字符串@click无法触发事件绑定
解决:@click改成onclick, 并添加 mounted(){ window.fun=this.fun} 解决方法参考

Plugins

  • spring-assistant
  • springirun

话说这两个插件的开发者真用心了,CE顿时变得香香
解决方案参考

@profile.active@无法识别的问题

原因:application.yml中无法识别@符号引用maven的标签 解决:pom.xml中增加一个插件 maven-resources-plugin 解决方法参考

习惯

service层:Login(String name,String password) dao层:selectByNameAndPassword(String name,String password)

maven切换profile无法生效

原因:切换了标签的默认值,但运行起来仍然是以前的值 解决: 重启invalidate caches and restart 或者 重新compile一下

swagger 配置无法生效

原因: springBoot 版本2.6以后
解决方案:添加配置spring.mvc.pathmatch.matching-strategy=ant_path_matcher
版本成功匹配: springBoot 2.7.10,swagger:2.9.2
解决方案连接

Invalid bound statement (not found):com.coh.ssm.dao.CupDao.Search

原因:配置文件中id要跟接口方法名保持一致 解决:id="Search"

答疑

@RequestBody是适用于异步请求,将数据放在请求体中,格式为json

单体部署项目要点

  • mvn package 打包项目
  • 启动命名your/path/to/bin/java -jar your/path/to/project.jar
  • 如果不跳过maven test 项目会多一些数据,如果你不介意无所谓
  • 覆盖配置属性java -jar project.jar --server.port=81
  • 禁用参数启动 SpringApplication.run(SsmApplication.class) ,去掉args
  • 多个配置文件,springBoot会读取并集,一起奏效
  • 四级配置文件对于不同的角色
    1. classpath: application.yml 开发
    2. classpath: config/application.yml 开发管理
    3. 服务器某个目录: 运维
    4. 服务器最高目录: 运维管理
  • 指定配置文件名启动的参数 --spring.config.name=application 指定路径--spring.config.location=classpath:/application.yml
  • 单文件配置多环境 注意使用的是spring.profile.active.on-profile: pro, 子环境中配置的是spring.profile.active: pro
  • 多环境配置为多文件 名称规范 application-dev.yml 主配置spring.profiles.active: dev dev配置文件spring.config.activate.on-profile: - dev

maven 作为主配置 springBoot 读取配置

  • maven标签 <profiles></profiles>并在application.yml中读取@profile.active@
  • 注意引用插件 maven-resource-plugin来识别@ @

@self4j

  • 加在需要日志的类上
  • 自定义日志格式和颜色logging.partten.console: "%d %clr(%5p) --- [%clr(%16t){blue}] %clr(%-40.40c){cyan} : %m %n"
  • %p 日志级别, %t线程, %clr设置颜色%, {blue}设置为蓝色, -40.40c左对齐类名占用40位并截取40位,%n换行符

基础功能和基础运维配置完结!


以下将学习更多开发类的知识

集成任意第三方类,使用JavaConfig @Bean来配置

没有文档就没有收获,一堆代码是无法直接了解做了什么的

Mybatis 两种写法

  • annotation写法在Dao接口上@Mapper
@Mapper
public interface CupDao{
   // your code here
  @Select("select count(*) from cup")
  int Count();
}
  • 配置文件写法:除了写好接口java.com.coh.ssm.CupDao和Mapper对象的配置文件resource/com/coh/ssm/CupDao.xml,注意路径保持一致否则找不到
  • 另外启动类上注解扫描@MapperScan(basePackages = {"com.coh.ssm.dao"})
@MapperScan(basePackages = {"com.coh.ssm.dao"})
public class SsmApplication {

    public static void main(String[] args) {
        SpringApplication.run(SsmApplication.class, args);
    }

}

热部署 IDEA CE

  • 勾选在File-setting-AdvanceSetting-Allow:auto-make start even if developed app is running
  • 勾选 File-setting-Compiler: Build project automatically
  • pom.xml添加配置 spring-boot-devtools 插件

banner.txt 启动字符输出配置

Filter 配置类方式

  1. 写一个配置类
public class FilterDemo implements Filter {
        // implement methods
}
  1. 用FilterRegistrationBean加载Filter配置类到spring
@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean<FilterDemo> RegistrationBean() {
        FilterRegistrationBean<FilterDemo> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setName("filterDemo");
        //设置其他属性,最后返回
        return registrationBean;
    }
}

Interceptor配置类

  1. 写一个拦截器MyInterceptor 完成接口HandlerInterceptor
  2. 写一个拦截器配置类 InterceptorConfig 完成接口 WebMvcConfigurer
  3. 重写方法addInterceptors(InterceptorRegistry registry)完成拦截路径配置

so easy

刚说so easy,接着就打脸的swagger配置,已经花了1天时间,但还没弄好

swagger本地访问地址:localhost:81/swagger-ui.html

见 bug fix