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

springboot使用乱记

程序员文章站 2022-04-30 20:22:14
springboot运行的三种方式 1.直接运行main 2.打成jar包,使用java -jar命令运行 3.spring-boot:run方法运行 Springboot热部署 依赖: org.springframework.boot ......
springboot运行的三种方式
1.直接运行main
2.打成jar包,使用java -jar命令运行
3.spring-boot:run方法运行
 
springboot热部署
依赖:
<dependency>  
    <groupid>org.springframework.boot</groupid>  
    <artifactid>spring-boot-devtools</artifactid>  
   <optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖该项目的项目如果想要使用devtools,需要重新引入 -->  
</dependency>  
 
springboot重启是reload重启,通过监控classpath的变化,如果classpath中的文件发生变化,即触发重启。springboot通过两个classpath来完成reload,一个basic classloader中加载不变的类,一个restart classloader中加载classpath中的类,重启的时候,restart classloader中的类丢弃并重新加载;
 
排除资源:
spring.devtools.restart.exclude=static/**,templates/**
spring.devtools.restart.additional-exclude=public/** (处理默认配置排除之外的)
spring.devtools.restart.enabled=false  (禁用自动重启)
 
idea实现devtools热部署需要配置两步 :
1、ctrl + shift + a --> 查找make project automatically --> 选中 
2、ctrl + shift + a --> 查找registry --> 找到并勾选compiler.automake.allow.when.app.running 
 
springboot中的参数设置
①springboot中主要的参数来源及优先级:
     1,命令行参数;
     2,servletconfig和servletcontext;
     3,操作系统环境变量;
     4,application-{profile}.properties或者yaml文件;
     5,application.properties或者yaml文件;
②springboot提供了方便的properties绑定机制
    1)默认从application.properties中加载配置;
app :
  myname : "leo"
   2)配置值:
@controller
public class testcontroller {

    @value("${app.myname}")
    private string myname;

    @requestmapping(value = "test",method = requestmethod.get)
    @responsebody
    public string test(string name){
        system.out.println("============"+myname);
        return myname;
    }
}
③@configurationproperties:
两种绑定方式:
1,直接在类上绑定
2.在bean标签后面绑定
参数绑定标签:可以非常方便的把资源文件中的内容绑定到对象上
资源文件:
app :
  config:
    myname : "leo"
    age : 20
    money : 30

bean:

@getter
@setter
@configurationproperties(prefix = "app.config")
@component
public class user {

    private string myname;
    private integer age;
    private integer money;
}

 

静态资源
1,默认情况下,springboot会从classpath下的/static、/public、/resources、/meta-inf/resources下加载静态资源;
2,可以通过修改spring.resources.staticlocations来修改静态资源加载地址;
3,因为应用是打成jar包,所以之前的src/main/webapp不会加载;
 
springboot中的日志
日志依赖:
<dependency>
    <groupid>org.slf4j</groupid>
    <artifactid>slf4j-api</artifactid>
</dependency>
①springboot推荐使用logback作为日志框架
②springboot默认支持logback.xml或者logback-spring.xml,推荐使用logback-spring.xml,springboot会增加额外功能
③可以通过logging.config=classpath:mylogback.xml指定自己的logback配置文件(不推荐)
④logbak.xml文件结构说明
  • (1)configuration>:logback根元素,它的属性如下
  • 1,scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • 2,scanperiod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • 3,debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
  • (2)<contextname>:上下文名字
  • (3)<property>:定义属性,可以使用${}在配置文件中使用
  • (4)<appender>:在logback中是用于具体记录日志的组件,可以用来配置日志记录方式,日志记录格式等
  • 常见的appender:
  • 1,ch.qos.logback.core.consoleappender:输出到控制台;
  • 2,ch.qos.logback.core.fileappender:输出到文件;
  • 3,ch.qos.logback.core.rolling.rollingfileappender:输出到文件,可以配置滚动策略,当日志达到某个条件之后分文件记录
springboot下打印mybatis日志最便捷的方法:
在application.properties中加入:logging.level.com.seemygo.server.goods.mapper=debug
 
springboot中集成mybatis
1,引入依赖:
<dependency>
			<groupid>org.mybatis.spring.boot</groupid>
			<artifactid>mybatis-spring-boot-starter</artifactid>
			<version>1.3.0</version>
</dependency>
2,正常完成mapper接口和mapper.xml
3,mybatis-spring-boot-starter提供了以下配置:
(具体参考mybatisproperties对象)
mybatis.configlocation:mybatis的配置文件地址;
mybatis.mapperlocations:com/xmg/springboot/p2p/mapper/*mapper.xml
mybatis.typealiasespackage:别名扫描包;
4,扫描mapper接口:
第一种方式:使用@mapperscan标签
@springbootapplication
@mapperscan(basepackages="com.example.demo.mapper")
public class app {
public static void main(string[] args) {
  springapplication.run(app.class, args);
}
}
会自动扫描指定包下的mapper接口;
第二种方式:代码的方式,自己手动提供一个自动扫描配置对象:
@configuration
@autoconfigureafter(mybatisautoconfiguration.class)
public class mapperscanconfiguration {
@bean
  public mapperscannerconfigurer mapperscannerconfigurer() {
    mapperscannerconfigurer msc = new mapperscannerconfigurer();
    msc.setsqlsessionfactorybeanname("sqlsessionfactory");
    msc.setbasepackage("com.xmg.springboot.demo._10mybatis.mapper");
    return msc;
  }
}

 

 

springboot事务处理
①配置事务管理器
1,直接开启@enabletransactionmanagement注解;相当于在xml中配置<tx:annotation-driven/>
@springbootapplication
@enabletransactionmanagement
public class app {
	public static void main(string[] args) {
		springapplication.run(app.class, args);
	}
}

2.依赖包:

		<dependency>
		    <groupid>org.mybatis.spring.boot</groupid>
		    <artifactid>mybatis-spring-boot-starter</artifactid>
		    <version>1.3.0</version>
		</dependency>
		<dependency>
			<groupid>org.springframework.boot</groupid>
			<artifactid>spring-boot-starter-jdbc</artifactid>
		</dependency>
3事务控制
(1),如果开启了@enabletransactionmanagement,只需要在service上面使用@transactional即可;

 

 
springboot自动生成的项目框架时如果选择了数据源的问题
(1)如果暂时不需要数据源,可将pom文件中的mysql和mybatis(或其他数据源框架)注释掉,即可正常启动。
(2)在@springbootapplication中排除其注入
    @springbootapplication(exclude={datasourceautoconfiguration.class,hibernatejpaautoconfiguration.class})