update和delete在对不存在的值进行操作时,并不会抛出异常,而是返回值为0,如果不注意这个返回值,会将无效的数据存入缓存。

    Spring 中,创建定时任务除了使用@Scheduled 注解外,还可以使用 SchedulingConfigurer。

    默认的,SchedulingConfigurer 使用的也是单线程的方式,如果需要配置多线程,则需要指定 PoolSize,加入如下代码即可:

    1. @Override
    2. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    3. ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    4. taskScheduler.setPoolSize(10);
    5. taskScheduler.initialize();
    6. taskRegistrar.setTaskScheduler(taskScheduler);
    7. }

    出现spring boot Configuration Annotation Proessor not found in classpath的提示是在用了@ConfigurationProperties这个注解时,所以问题出现在ConfigurationProperties注解。
    根据提示的not found in classpath,查询此注解的使用关于怎么指定classpath,进而查询location,spring boot1.5以上版本@ConfigurationProperties取消location注解
    官方解决方案,Maven引入依赖

    1. <dependency>
    2. <groupId> org.springframework.boot </groupId>
    3. <artifactId> spring-boot-configuration-processor </artifactId>
    4. <optional> true </optional>
    5. </dependency>

    (1)ActiveMQ支持多种消息协议,包括AMQP,MQTT,Stomp等,并且支持JMS规范,但Redis没有提供对这些协议的支持;

    (2)ActiveMQ提供持久化功能,但Redis无法对消息持久化存储,一旦消息被发送,如果没有订阅者接收,那么消息就会丢失;

    (3)ActiveMQ提供了消息传输保障,当客户端连接超时或事务回滚等情况发生时,消息会被重新发送给客户端,Redis没有提供消息传输保障。

    • 循环依赖

    构造器注入会导致循环依赖,换成setter注入即可。

    Alt+Ctrl+L 快速格式化Mybatis的xml文件

    mvn idea:module 可以解决iml不对的问题
    dubbo注册nacos如果显示内网,修改/etc/hosts内的主机名前面的ip,改成外网ip即可。

    • springboot中URL带有斜杠的转义字符百分之2F导致的400错误

    原因
    据说是tomcat默认是不支持转义的,需要手动设置一下转化,这个搜索tomcat的设置可以找到,但是这个是springboot,有内置的tomcat,但是在yml中找不到相关的配置。

    解决方式
    修改一下启动类,加一个系统参数,重写WebMvcConfigurerAdapter的configurePathMatch方法

    1. @SpringBootApplication
    2. public class Application extends WebMvcConfigurerAdapter {
    3. public static void main(String[] args) throws Exception {
    4. System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
    5. SpringApplication.run(Application.class, args);
    6. }
    7. @Override
    8. public void configurePathMatch(PathMatchConfigurer configurer) {
    9. UrlPathHelper urlPathHelper = new UrlPathHelper();
    10. urlPathHelper.setUrlDecode(false);
    11. configurer.setUrlPathHelper(urlPathHelper);
    12. }
    13. }