SpringBoot中简单的使用Hazelcase(内存计算平台)

环境:JDK1.8、MAVEN 3.6.1、eclipse

1.添加Hazelcase依赖

Hazelcase是一个分布式数据网格的内存数据存储的项目

当前的pom文件:

   <properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.22.RELEASE</version>
		<relativePath />
	</parent>


	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- hazelcast的基本配置 -->
		<dependency>
			<groupId>com.hazelcast</groupId>
			<artifactId>hazelcast</artifactId>
		</dependency>
		<!-- hazelcast的spring配置 -->
		<dependency>
			<groupId>com.hazelcast</groupId>
			<artifactId>hazelcast-spring</artifactId>
		</dependency>
		<!-- junit配置 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

2.查看官方文档

spring官方: 如果Hazelcast位于类路径上,Spring Boot将自动配置HazelcastInstance
您可以在应用程序中注入的内容。该HazelcastInstance如果配置被发现时才创建。
你可以定义一个com.hazelcast.config.Config 的bean,我们将使用它。如果您的配置定义了实例名称,我们将尝试查找现有实例,而不是创建新实例。
您还hazelcast.xml可以通过配置指定要使用的配置文件:
spring.hazelcast.config = classpath:config / my-hazelcast.xml
否则,SpringBoot会尝试从默认位置(即hazelcast.xml工作目录或类路径的根目录)中查找Hazelcast配置。我们还检查是否hazelcast.config设置了系统属性。查看
Hazelcast文档以获取更多详细信息。

Spring Boot将自动配置HazelcastInstance

3.创建入口类并测试

当前的入口类Application内容如下:

/**
 * @description 在SpringBoot中使用hazelcase(内存内存计算平台?)
 * @author admin
 *
 */
@RestController
@SpringBootApplication
public class Application {
    @Autowired
	HazelcastInstance hazelcastInstance;
	
	/**
	 * @description 1. 测试springBoot官网上的一句话: 如果Hazelcast位于类路径上,Spring Boot将自动配置HazelcastInstance
	 */
	@RequestMapping("/testHazelcastInstance")
	public String testHazelcastInstance() {
		System.out.println(hazelcastInstance);//HazelcastInstance{name='test-hazelcase', node=[192.168.253.1]:5701},
		return hazelcastInstance.toString();
	}
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

测试:报错

  1. Field hazelcastInstance in com.hy.springboot.hazelcast.demo.Application required a bean of type 'com.hazelcast.core.HazelcastInstance' that could not be found.
  2. Bean method ‘hazelcastInstance’ not loaded because ResourceCondition (Hazelcast) did not find resources 'file:./hazelcast.xml', 'classpath:/hazelcast.xml'
  3. Bean method ‘hazelcastInstance’ not loaded because @ConditionalOnSingleCandidate (types: com.hazelcast.config.Config; SearchStrategy: all) did not find any beans
  4. Bean method ‘hazelcastInstance’ not loaded because ResourceCondition (Hazelcast) did not find resources 'file:./hazelcast.xml', ‘classpath:/hazelcast.xml’

发现需要创建com.hazelcast.config.Config或者在classpath的根目录中创建hazelcast.xml

4.创建配置类

当前的HazelcaseConfig类的内容:

/**
 * @description 当前的Hazelcase的配置类
 * @author hy
 * @date 2019-08-14
 */
@Configuration
public class HazelcaseConfig {

	/**
	 * @description 3.创建Hazelcase的Config类
	 */
	@Bean
	public Config getConfig() {
		Config hazelcaseConfig = new Config();
		MapConfig mapConfig = new MapConfig();
		mapConfig.setName("myMap");// 设置当前的mapConfig的名称
		hazelcaseConfig.setInstanceName("test-hazelcase")// 设置当前创建的实例的名称
				.addMapConfig(mapConfig);//添加当前的map
		return hazelcaseConfig;
	}
}

5.再次测试

结果为HazelcastInstance{name=‘test-hazelcase’, node=[192.168.253.1]:5701};测试创建实例成功!

发现HazelcastInstance的实际类型为:HazelcastInstanceProxy,查看HazelcastInstanceProxy得知其其具有一系列的获取,List、Set、Map的方法

6.测试在配置文件中添加的MapConfig

Application类中添加测试内容:

@RequestMapping("/testGetMap")
	public String testGetMap() {
		IMap<Object, Object> map = hazelcastInstance.getMap("myMap");
		return map.toString();//8.测试成功!testGetMap显示IMap{name='myMap'}
		//通过查看当前的IMap发现可以像util包中的map一样存储数据,但是IMap更加强大
	}

访问后:访问MapConfig成功!

7.创建Controller层来测试当前的IMap,并实现数据的操作

当前的MapController中的内容:

/**
 * @description 测试通过hazelcast像创建的MapConfig中的map中操作数据
 * @author hy
 * @date 2019-08-14
 */
@RestController
public class MapController {
	@Autowired
	HazelcastInstance hazelcastInstance;
	/**
	 * @description 测试添加数据,删除数据,修改数据,查询数据
	 */
	@RequestMapping("/testAddMap")
	public String testAddMap(String key,String value) {
		IMap<Object, Object> map = hazelcastInstance.getMap("myMap");
		map.put(key, value);
		return "【添加key:"+key+".value:"+value+" 成功!】";
	}
	
	/**
	 * @description 测试添加数据,删除数据,修改数据,查询数据
	 */
	@RequestMapping("/testUpdateMap")
	public String testUpdateMap(String key,String value) {
		IMap<Object, Object> map = hazelcastInstance.getMap("myMap");
		map.put(key, value);
		return "【更新key:"+key+".value:"+value+" 成功!】";
	}
	
	/**
	 * @description 测试添加数据,删除数据,修改数据,查询数据
	 */
	@RequestMapping("/testFindMap")
	public String testFindMap(String key) {
		IMap<Object, Object> map = hazelcastInstance.getMap("myMap");
		Object value = map.get(key);
		return "【查询key:"+key+".value:"+value+" 成功!】";
	}
	
	/**
	 * @description 测试添加数据,删除数据,修改数据,查询数据
	 */
	@RequestMapping("/testDeleteMap")
	public String testDeleteMap(String key) {
		IMap<Object, Object> map = hazelcastInstance.getMap("myMap");
		map.delete(key);
		return "【删除key:"+key+" 成功!】";
	}
}

8.测试操作IMap

结果:成功!

9.总结

1.Hazelcase中需要创建Config这个类的实例,并添加XXConfig(例如MapConfig,需要指定当前的XXConfig名称)

2.通过使用HazelcastInstance这个类的实例来操作配置的XXConfig(MapConfig)

3.Hazelcase中可以添加各种类型的数据,官方说当前Hazelcase的速度要比Redis快

以上纯属个人见解,如有问题请联系本人!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值