当前位置: 首页 > news >正文

网站建设需求说明书福永电子烟网站开发

网站建设需求说明书,福永电子烟网站开发,阳春县建设局网站,网站推广类型背景: 之前一直只考虑用JavaSe进行游戏服务器开发,目前项目使用了Spring,发现还是非常好的,好处如下: 好处1:依赖注入非常方便,我们只使用Spring最基本的功能即可,这样子就算是有一些模块不使用Spring管理…

背景:

之前一直只考虑用JavaSe进行游戏服务器开发,目前项目使用了Spring,发现还是非常好的,好处如下:

        好处1:依赖注入非常方便,我们只使用Spring最基本的功能即可,这样子就算是有一些模块不使用Spring管理也是非常方便的,因为我现在已经能轻松控制住Spring容器的声明周期。

        好处2: 模块之间就像搭建积木即可,又相互配合。 我想支持web也是非常轻松。

        好处3: 这样子再去整合Mybatis、或者其它的一些MQ、ES之类的中间件,就太简单了。

pom.xml   // 项目中使用了lettuce,这里作为演示

       <dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId><version>5.1.8.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><!--(起码1.2.48以上)因为这个版本一下存在漏洞--><version>1.2.48</version></dependency>

1.Application.java

package com.example.springbootgame.application;import org.springframework.context.ApplicationContext;public class Application {private static ApplicationContext applicationContext;public static ApplicationContext getApplicationContext() {return applicationContext;}public static void setApplicationContext(ApplicationContext applicationContext) {Application.applicationContext = applicationContext;}public static <T> T getBean(Class<T> requiredType) {if (applicationContext == null) {return null;}return applicationContext.getBean(requiredType);}}

2.RedisConfig.java // 使用Configuration引入一些自定义的Bean

package com.example.springbootgame.config;import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.sync.RedisCommands;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.time.Duration;
import java.time.temporal.ChronoUnit;@Configuration
public class RedisConfig {@Beanpublic GameRedis getGameRedis() {RedisURI redisURI = RedisURI.builder().withHost("localhost").withPort(6379).withTimeout(Duration.of(10, ChronoUnit.SECONDS)).build();RedisClient redisClient = RedisClient.create(redisURI);return new GameRedis(redisClient.connect().sync());}
}

3.GameRedis.java // 包装器模式。包装出自己的访问接口

package com.example.springbootgame.config;import io.lettuce.core.api.sync.RedisCommands;public class GameRedis {private RedisCommands redisCommands;public GameRedis(RedisCommands redisCommands) {this.redisCommands = redisCommands;}public <K, V> V get(K k) {return (V) redisCommands.get(k);}public <K, V> void set(K k, V v) {redisCommands.set(k, v);}
}

4.LoginHandler.java

package com.example.springbootgame.handler;import com.alibaba.fastjson.JSON;
import com.example.springbootgame.config.GameRedis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;import java.util.HashMap;
import java.util.Map;@Controller
public class LoginHandler {@AutowiredGameRedis gameRedis;/*** 玩家登录*/public void onCSLogin() {// 简单类型gameRedis.set("123", "abc");String v = gameRedis.get("123");System.out.println(v);// 复杂类型Data data = new Data();data.map.put("k", 6666);gameRedis.set("obj", JSON.toJSONString(data));Data obj = JSON.parseObject(gameRedis.get("obj"), Data.class);System.out.println(obj);}private static class Data {public int num = 1;public Map<String, Integer> map = new HashMap<>();@Overridepublic String toString() {return "Data{" +"num=" + num +", map=" + map +'}';}}
}

5.GameServer.java

package com.example.springbootgame;import com.example.springbootgame.application.Application;
import com.example.springbootgame.handler.LoginHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;import java.io.IOException;@SpringBootApplication
@Slf4j
public class GameServer {public static void registerShutdownHook() {Runtime.getRuntime().addShutdownHook(new Thread(() -> {log.info("gs shutdown in {}", Thread.currentThread().getName());// 测试bean的获取LoginHandler loginHandler = Application.getBean(LoginHandler.class);loginHandler.onCSLogin();// 关闭Spring容器ApplicationContext applicationContext = Application.getApplicationContext();if (applicationContext != null) {ConfigurableApplicationContext cac = (ConfigurableApplicationContext) applicationContext;cac.close();}}, "ShutdownHook-GameServer-Thread"));}public static void main(String[] args) {registerShutdownHook();// 启动Spring容器ApplicationContext applicationContext = SpringApplication.run(GameServer.class, args);Application.setApplicationContext(applicationContext);// 初始化各个模块,如:进行handler的扫描// 阻塞关服try {System.in.read();} catch (IOException e) {log.error("exception", e);}}}
  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::               (v2.7.17)2023-11-18 20:56:48.393  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : Starting GameServer using Java 11.0.11 on DESKTOP-JTMBOEI with PID 7056 (D:\2_test_java\SpringBootGame\target\classes started by Administrator in D:\2_test_java\SpringBootGame)
2023-11-18 20:56:48.397  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : No active profile set, falling back to 1 default profile: "default"
2023-11-18 20:56:48.960  INFO 7056 --- [           main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
2023-11-18 20:56:48.961  INFO 7056 --- [           main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
2023-11-18 20:56:49.492  INFO 7056 --- [           main] com.example.springbootgame.GameServer    : Started GameServer in 1.512 seconds (JVM running for 2.701)
1
2023-11-18 20:56:50.723  INFO 7056 --- [meServer-Thread] com.example.springbootgame.GameServer    : gs shutdown in ShutdownHook-GameServer-Thread
abc
Data{num=1, map={k=6666}}

http://www.yayakq.cn/news/219617/

相关文章:

  • 在建设银行网站上还贷网站定制开发什么意思
  • 上海网站设计专注乐云seo企业管理系统哪家好
  • 深圳做网站的大公司开创集团与百度
  • 火山开发软件可以开发网站吗开源php表单系统
  • 网站开发先前台和后台杭州网站建设seo优化
  • 福建建设银行网站网站设计名称
  • 学中文网站今科云平台网站建设技术
  • 精致网站赏析建设一个电商网站的流程
  • 设备电商网站模板wordpress调用标签
  • 打开官方网站浏览器企业crm客户管理系统
  • 清河县网站建设邓州微网站建设
  • 中英文网站建设 pdf网站处于建设中会显示什么英文
  • 东莞自助建站平台有没有可以做兼职的网站吗
  • 易语言做网站简单教程苏州房地产网站建设
  • 高校门户网站建设建议网站方案策划怎么写
  • 网站建设深圳市如何做好高端品牌网站建设
  • 如何制作私人网站社区类网站有哪些
  • 怎么注册网站网址合同管理系统
  • 无锡装饰网站建设wordpress 2017 漏洞
  • 长沙做四维彩超玛丽亚m网站企业网站建设应具备的功能
  • 网站资料如何做参考文献企业网站设计制作收费
  • 网站模板建站教程视频网络公关名词解释
  • 重庆商业网站有哪些打开一个网站为繁体字是怎么做的
  • 成都网络营销网站电商企业网站源码
  • 群晖 nas 做网站网上国网app官方下载
  • 网站欣赏与创建网页教案公益机构网站建设方案
  • 北京国贸网站建设网站模板免费下载网页模板
  • 自己免费建设网站泉州网站建设 乐本园
  • 深圳广告策划公司排名山西谷歌seo
  • 普洱茶网站建设网络营销收获与体会