springboot常用介绍
官方文档:
springbootGitHub地址:https://github.com/spring-projects/spring-boot springboot官方文档:https://spring.io/guides/gs/spring-boot/
一、通过jar命令启动jar包
pom增加插件编译,在spring boot2.3之前
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>pom增加插件编译,在spring boot2.3之后
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--需要加这个,不然打包镜像找不到启动文件-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>二、war包的形式放入tomcat容器
1、在pom.xml中将打包形式 jar 修改为war
2、修改启动类
@SpringBootApplication
public class StartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(StartApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(StartApplication.class, args);
}
}3、打包项目,启动tomcat
三、获取jar包的路径
jar包获取可能会出现file:/字符
//第一种
File path = new File(ResourceUtils.getURL("classpath:").getPath());
if(!path.exists()) path = new File("");
System.out.println(path.getAbsolutePath());
//第二种
System.out.println(System.getProperty("user.dir"));
//第三种
String path1 = ClassUtils.getDefaultClassLoader().getResource("").getPath();
System.out.println(URLDecoder.decode(path1, "utf-8"));
//第四种
String path2 = ResourceUtils.getURL("classpath:").getPath();
System.out.println(path2);
//第五种
ApplicationHome h = new ApplicationHome(getClass());
File jarF = h.getSource();
System.out.println(jarF.getParentFile().toString());四、springboot上传大小限制
有两种方式解决 1、通过配置文件 2、加一个bean的管理(不推荐)
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
multipartConfigFactory.setMaxFileSize(1024*1024*10);
multipartConfigFactory.setMaxRequestSize(1024*1024*10);
return multipartConfigFactory.createMultipartConfig();
}五、springboot的@ComponentScan注解
@SpringBootApplication注解包含了@ComponentScan,springboot启动的时候会默认扫描当前启动类包下所有的bean(包含子目录)
六、springboot多模块扫包问题
springboot启动的时候会默认扫描当前启动类包下所有的bean(包含子目录),但是由于多个子项目下的包路径可能不一样,会导致扫不到相应的bean。 两种解决方案: 1、修改@SpringBootApplication注解,把包路径往前,@SpringBootApplication(scanBasePackages="com.lcy.filesystem") 2、通过@Import注解引入子项目配置类,例如: @Import(Servicefiguration.class)
七、spring在创建完bean以后的回调方法
bean类实现InitializingBean接口,并且实现afterPropertiesSet方法,这个方法就是初始化bean以后回调的方法
