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

学习springboot小笔记(七) ----启动类不能放在java目录下、缓存的使用步骤介绍

程序员文章站 2022-05-29 18:34:19
...

一、springboot的启动类不能放在java目录下!!!必须要个包将它包进去

否则会报错误:

Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.

这个原因值得注意就是因为有时候很难在IDEA中的项目目录认出来这个错误。

             

            学习springboot小笔记(七) ----启动类不能放在java目录下、缓存的使用步骤介绍             学习springboot小笔记(七) ----启动类不能放在java目录下、缓存的使用步骤介绍

                          正常的                                                      错误的

如果不是细心去看,真的会被坑一下哈。

不过,如果自己正常操作也不会造成这种情况的,我是无意中弄到了这个,没看出来。

如果是在移动不了,就到文件目录移动,不过之后就的手动改一下package的名字了。

 

 

二、缓存的使用

(一)共同操作:

首先引入依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

其次,在Spring Boot主类中增加@EnableCaching注解开启缓存功能
Spring Boot根据下面的顺序去侦测缓存提供者:默认的缓存实现是:ConcurrentMapCacheManager

  • JCache (JSR-107)
  • EhCache 2.x
  • Hazelcast
  • Infinispan
  • Redis
  • Guava
  • Simple

然后,在数据访问接口(repository层或者说Dao层)中配置 缓存配置注解 @CacheConfig(cacheNames=“users”),这个表示 该数据访问对象中返回的内容将存储于名为users的缓存对象中

再者、对应的操作函数也要加上@Cacheable。Eg:

//将下面函数的返回值加入缓存,同时,在查询时候,会先从缓存中获取,若不在才会发起对数据库的访问
//condition表示条件,只有当第一个参数的长度小于10的时候才会被缓存,
//也就是name的长度超过10的话,就不会被缓存了的。
@Cacheable(key="#p0",condition="#p0.length() < 10")
User findByName(String name);

最后,通过重复访问一个数据,查看是否 有重复的sql语句(在配置文件应该加上:

#开启hibernate对sql的打印
spring.jpa.properties.hibernate.show_sql=true

)对数据库访问。

若无重复,则是缓存起作用了。

若是重复了,则缓存不起作用。

在这里只是采用了默认的缓存实现方法ConcurrentMapCacheManager。

 

(二)选择操作--选择不同的缓存实现

    (1) 使用ehcache实现缓存的步骤:  

    1.添加依赖

<dependency>
   <groupId>net.sf.ehcache</groupId>
   <artifactId>ehcache</artifactId>
</dependency>

   2.新建ehcache的xml配置文件

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="ehcache.xsd">

    <cache name="Users"
           maxEntriesLocalHeap="200"
           timeToLiveSeconds="600">
    </cache>

</ehcache>

<这样子就好了,运行程序,debug状态下面可以看见,CacheManager的对象是EhCacheManager

 

 (2)使用redis实现缓存的步骤

      首先、本地的redis环境先搭建好。

       其次,引入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-redis</artifactId>
</dependency>

在application.properties中配置redis

#redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1

再者,缓存成员类需要继承接口Serialiazable。

然后就可以用test测试了。