Springboot-session

本文介绍如何在Spring Boot应用中配置session,并详细解释了如何使用Redis作为session存储方式,包括配置步骤、有效时间设置及注意事项。

application.properites配置

session store type使用来存放session的存储方式,目前Spring boot中只支持Redis方式。 由于本应用暂无需将session放入redis的需求,故这里就可以将session store type设置为none.

这里我们将此配置信息放入application.properites之中:

 # default-store in spring session. it will be set in redis only outside.
spring.session.store-type=none

补充: pom.xml

  <!-- 引入session jar包 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
        </dependency>

再次启动,成功。


session 有效时间设置:

//在程序入口类中添加如下代码:
//设置session失效时间
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer(){
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                container.setSessionTimeout(1800);//单位为S
            }
        };
    }

使用redis存储session:

1. pom.xml设置
       <!-- 引入session jar包 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
        </dependency>
2. application.properties配置
#session存储格式为redis
spring.session.store-type=redis
#redis配置:
spring.redis.database=0
spring.redis.host=localhost
spring.redis.password=
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0
spring.redis.port=6379
3.测试代码:
@RequestMapping("/")
@ResponseBody
String home(HttpSession session) {
    session.setAttribute("test", new Date());
    return "Hello World!";
}
4. 缺点:

在用redis做session管理的时候,2个ajax在begin_request时间基本一致,
但是到达action的时间就有差距了,相差在500毫秒左右(处理session),从而容易造成请求阻塞。

原文链接

总结: 对于接口api类型的小项目,可以不配置session。

### Spring Boot与AI集成概述 Spring Boot简化了基于Spring的应用程序的启动和部署过程,通过提供默认配置和自动配置机制使开发者能够专注于编写业务逻辑而非底层细节[^1]。当涉及到人工智能(AI)领域时,这种特性同样有助于加速开发流程并降低复杂度。 对于希望将机器学习模型或其他形式的人工智能组件融入到Web服务中的团队来说,利用Spring Boot可以快速搭建起支持RESTful API的服务端应用,并且方便地管理依赖关系和服务发现等问题。下面是一些关于如何实现这一目标的具体方法: #### 使用TensorFlow Serving作为后端微服务 一种常见的做法是采用Google TensorFlow框架来训练神经网络模型,在完成离线训练之后导出为SavedModel格式文件夹结构;接着创建一个新的Spring Boot应用程序实例用于托管这些预训练好的模型并通过HTTP接口对外暴露预测功能。此时可以通过gRPC调用远程执行推理操作从而获得分类结果或者其他类型的输出数据。 ```java @RestController @RequestMapping("/api/v1/predictions") public class PredictionController { private final SavedModelBundle model; @Autowired public PredictionController(SavedModelBundle model){ this.model = model; } @PostMapping(value="/classify", consumes="application/json", produces="application/json") public ResponseEntity<String> classify(@RequestBody Map<String,Object> payload){ try{ // Prepare input tensor from JSON object... Tensor<?> input = ... ; Session.Runner runner = model.session().runner(); List<Tensor<?>> outputs = runner.feed("input_node_name", input).fetch("output_node_name").run(); // Process output tensors into response format... return new ResponseEntity<>(jsonResponseString, HttpStatus.OK); }catch(Exception e){ logger.error(e.getMessage(),e); throw new RuntimeException("Failed to process request.",e); } } } ``` 另一种方式则是直接嵌入Python脚本至Java进程中运行,比如借助Jython解释器或者ProcessBuilder类发起子进程的方式加载外部.py源码片段来进行实时计算任务处理。不过这种方式可能会带来额外的安全风险以及性能损耗问题需要注意防范措施。 除了上述两种方案之外还有许多其他可能性等待探索实践,例如Apache MXNet、PyTorch等开源库也提供了丰富的API帮助构建高效的分布式训练环境和支持多种编程语言交互的能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值