Springboot工作笔记

112 阅读1分钟

1、注册springboot启动相关触发事件:

@Order(LoggingApplicationListener.DEFAULT_ORDER-1)
public class CmdbClientListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {}

2、刷新spring容器参数

ConfigurableEnvironment environment=event.getEnvironment();
MapPropertySource mapPropertySource=new MapPropertySource(CmdbConstants.RESOURCE_NAME,propResult);
environment.getPropertySources().addLast(mapPropertySource);
environment.addActiveProfile(CmdbConstants.RESOURCE_NAME);

3、主动刷新配置文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
    <version>2.1.9.RELEASE</version>
</dependency>

刷新配置文件访问地址:http://localhost:8080/actuator/refresh

4、Http响应乱码设置

spring.http.encoding.force=true
spring.http.encoding.charset=utf-8
spring.http.encoding.enabled=true

5、springboot dubbo 常用设置

#重试设置
dubbo.consumer.retries=0
#超时设置,务必配置,不配置超时时间,有的时候回出现调用时间很长的问题
dubbo.consumer.timeout=90000

6、监控地址

http://127.0.0.1:9080/cpf-intra/actuator
http://127.0.0.1:9080/cpf-intra/actuator/health

7、提前加载资源文件

EnvironmentPostProcessor

8、常用的访问地址:

#监控地址
/actuator
#swagger2.0访问地址
/swagger-ui.html
#swagger3.0访问地址
/swagger-ui/index.html

9、打包命令

#个人项目打包后台服务命令
mvn clean package appassembler:generate-daemons

10、@Transactional事务使用总结

1、异常在A方法内抛出,则A方法就得加注解
2、多个方法嵌套调用,如果都有 @Transactional 注解,则产生事务传递,默认 Propagation.REQUIRED
3、如果注解上只写 @Transactional  默认只对 RuntimeException 回滚,而非 Exception 进行回滚,如果要对 checked Exceptions 进行回滚,则需要 @Transactional(rollbackFor = Exception.class)

同一个类中调用 @Transaction注解的方法会有事务效果吗?
没有,可以Autowired注入自己,然后再调用注入的类中的方法,即自己依赖自己,循环依赖;
这里在一个内部调用应该是相当于单纯的调用方法this.methodName(),并没有AOP代理。

常用的spring类

1、RequestMappingHandlerMapping

    @Resource
    RequestMappingHandlerMapping cehm;

2、打印出所有的mapping关系

        Map<RequestMappingInfo, HandlerMethod> map = cehm.getHandlerMethods();
        Set<RequestMappingInfo> mappings = map.keySet();
        Map<String, String> reversedMap = new HashMap<>();
        for (RequestMappingInfo info : mappings) {
            HandlerMethod method = map.get(info);
            reversedMap.put(method.toString(), info.getPatternsCondition().toString());
        }

springboot最小的运行jre

$J/bin/jlink -p $J/jmods --add-modules java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,java.rmi,java.xml.bind --output jre


jlink --add-modules java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,java.rmi,java.xml --output jre