zoukankan      html  css  js  c++  java
  • Spring Boot 缓存技术:Spring Boot

    image

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>1.5.10.RELEASE</version>
    	</parent>
    	<groupId>com.bjsxt</groupId>
    	<artifactId>23-spring-boot-ehcache</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    
    	<properties>
    		<java.version>1.7</java.version>
    		<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
    		<thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
    	</properties>
    
    	<dependencies>
    		<!-- springBoot的启动器 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<!-- springBoot的启动器 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-thymeleaf</artifactId>
    		</dependency>
    
    		<!-- springBoot的启动器 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-data-jpa</artifactId>
    		</dependency>
    
    		<!-- 测试工具的启动器 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    		</dependency>
    
    		<!-- mysql -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    
    		<!-- druid连接池 -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.0.9</version>
    		</dependency>
    
    		<!-- Spring Boot缓存支持启动器 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-cache</artifactId>
    		</dependency>
    
    		<!-- Ehcache坐标 -->
    		<dependency>
    			<groupId>net.sf.ehcache</groupId>
    			<artifactId>ehcache</artifactId>
    		</dependency>

                    <!--以下是处理  jdkb版本为10 编译为1.7的  java.lang.IllegalStateException: Failed to load ApplicationContext 解决办法 -------->
    		<dependency>
    			<groupId>javax.xml.bind</groupId>
    			<artifactId>jaxb-api</artifactId>
    			<version>2.3.0</version>
    		</dependency>
    		<dependency>
    			<groupId>com.sun.xml.bind</groupId>
    			<artifactId>jaxb-impl</artifactId>
    			<version>2.3.0</version>
    		</dependency>
    		<dependency>
    			<groupId>com.sun.xml.bind</groupId>
    			<artifactId>jaxb-core</artifactId>
    			<version>2.3.0</version>
    		</dependency>
    		<dependency>
    			<groupId>javax.activation</groupId>
    			<artifactId>activation</artifactId>
    			<version>1.1.1</version>
    		</dependency>
    	</dependencies>
    </project>

    UsersRepository

    package com.alan.dao;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    
    import com.alan.pojo.Users;
    /**
     * 参数一 T :当前需要映射的实体
     * 参数二 ID :当前映射的实体中的OID的类型
     *
     */
    public interface UsersRepository extends JpaRepository<Users,Integer>{
    
    }
    


    Users

    package com.alan.pojo;
    
    import java.io.Serializable;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="t_users")
    public class Users implements Serializable {
    
    	@Id
    	@GeneratedValue(strategy=GenerationType.IDENTITY)
    	@Column(name="id")
    	private Integer id;
    
    	@Column(name="name")
    	private String name;
    
    	@Column(name="age")
    	private Integer age;
    
    	@Column(name="address")
    	private String address;
    
    
    	public Integer getId() {
    		return id;
    	}
    
    	public void setId(Integer id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Integer getAge() {
    		return age;
    	}
    
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    
    	public String getAddress() {
    		return address;
    	}
    
    	public void setAddress(String address) {
    		this.address = address;
    	}
    
    	@Override
    	public String toString() {
    		return "Users [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
    	}
    }
    


    UsersService

    package com.alan.service;
    
    import java.util.List;
    
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.Pageable;
    
    import com.alan.pojo.Users;
    
    public interface UsersService {
    
    	List<Users> findUserAll();
    	Users findUserById(Integer id);
    	Page<Users> findUserByPage(Pageable pageable);
    	void saveUsers(Users users);
    }
    


    UsersServiceImpl


    package com.alan.service.impl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.Pageable;
    import org.springframework.stereotype.Service;
    
    import com.alan.dao.UsersRepository;
    import com.alan.pojo.Users;
    import com.alan.service.UsersService;
    /**
     * UsersService接口实现类
     *
     *
     */
    @Service
    public class UsersServiceImpl implements UsersService {
    
    	@Autowired
    	private UsersRepository usersRepository;
    
    	@Override
    	public List<Users> findUserAll() {
    		return this.usersRepository.findAll();
    	}
    
    	@Override
    	//@Cacheable:对当前查询的对象做缓存处理
    	@Cacheable(value="users")
    	public Users findUserById(Integer id) {
    		return this.usersRepository.findOne(id);
    	}
    
    	@Override
    	public Page<Users> findUserByPage(Pageable pageable) {
    		return this.usersRepository.findAll(pageable);
    	}
    
    	@Override
    	public void saveUsers(Users users) {
    		this.usersRepository.save(users);
    	}
    
    }
    

    App


    package com.alan;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cache.annotation.EnableCaching;
    
    
    @SpringBootApplication
    @EnableCaching
    public class App {
    
    	public static void main(String[] args) {
    		SpringApplication.run(App.class, args);
    	}
    }
    

    application.properties

    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/ssm
    spring.datasource.username=root
    spring.datasource.password=123456
    
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    
    spring.cache.ehcache.cofnig=ehcache.xml


    ehcache.xml

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    
        <diskStore path="java.io.tmpdir"/>
    
      <!--defaultCache:echcache的默认缓存策略  -->
        <defaultCache
                maxElementsInMemory="10000"
                eternal="false"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                maxElementsOnDisk="10000000"
                diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU">
            <persistence strategy="localTempSwap"/>
        </defaultCache>
        <!-- 自定义缓存策略 -->
        <cache name="users"
                maxElementsInMemory="10000"
                eternal="false"
                timeToIdleSeconds="120"
                timeToLiveSeconds="120"
                maxElementsOnDisk="10000000"
                diskExpiryThreadIntervalSeconds="120"
                memoryStoreEvictionPolicy="LRU">
            <persistence strategy="localTempSwap"/>
        </cache>
    </ehcache>
    


    UsersServiceTest




    为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
    学问:纸上得来终觉浅,绝知此事要躬行
    为事:工欲善其事,必先利其器。
    态度:道阻且长,行则将至;行而不辍,未来可期
    转载请标注出处!
  • 相关阅读:
    Python(二)
    Python(三)
    Python(一)
    shell(计算机壳层)(一)
    web.xml中 /和/*的区别
    dubbo-admin监控搭建2.6.0版本
    Centos7安装maven
    Dubbo启动时qos-server can not bind localhost:22222错误解决
    Centos7安装zookeeper
    mysql5和mysql8连接数据库的配置
  • 原文地址:https://www.cnblogs.com/ios9/p/14726613.html
Copyright © 2011-2022 走看看