1.spring ä¸å¦ä½å®ç°jspä¸javaç交äº
2.Spring Boot 2.x 到 3.2 的源码全面升级指南
3.手把手教你用Spring Boot搭建AI原生应用
spring ä¸å¦ä½å®ç°jspä¸javaç交äº
springä¸å©ç¨mvcæ¡æ¶å°±å¯ä»¥å®ç°jspåjava交äºäºã以ä¸ç¨spring mvcè¾åºhello world为ä¾æ¥è¯´æï¼
ä¸ã项ç®ä¾èµçjarå ï¼
1.Springæ¡æ¶ä¾èµçjarå ï¼
æ¥å¿ï¼commons-logging-1.1.3.jarï¼
JSTLæ¯æï¼jakarta-taglibs-standard-1.1.2ä¸çjstl.jaråstandard.jarï¼
2.Springçjarå ï¼
spring-framework-3.2.5.RELEASE/libsä¸çjarå ï¼è¿é为äºæ¹ä¾¿æç´æ¥æå ¨é¨é½å¤å¶è¿å»äºï¼ï¼
æ以ä¸çjarå å ¨é¨å¤å¶å°é¡¹ç®çWebContent/WEB-INF/libç®å½ä¸ã
äºãå¨/WEB-INFä¸æ·»å web.xmlæ件ï¼æ件å 容å¦ä¸ï¼
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SpringMVCLesson</display-name>
<servlet>
<servlet-name>SpringMVCLesson</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springservlet-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- load-on-startupå¿ é¡»æ¾å¨æå -->
</servlet>
<!-- Spring MVCé ç½®æ件ç»æ -->
<servlet-mapping>
<servlet-name>SpringMVCLesson</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
ä¸ãspringservlet-config.xmlæ件é ç½®ï¼
å¨é¡¹ç®ä¸æ°å»ºä¸ä¸ªresourcesçSource Folderæ件夹ï¼å¹¶æ·»å springservlet-config.xmlæ件ã
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="ponent-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- è§å¾è§£æå¨ -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
<mvc:annotation-driven/> å¼å¯æ³¨è§£æ å°æ¯æï¼å®æ¯ä¸ºäºç®åé ç½®ç缩åå½¢å¼ï¼å®ç¸å½äºä»¥ä¸2个é ç½®ï¼
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
ç±äºæ们å¨web.xmlæ件éé¢é ç½®çæ¯æ¦æªææç请æ±å°è¯¥servletï¼æ以æ们å¨è¿éè¦å¯¹éæèµæºæ件æ å°ä½ä¸ä¸é ç½®ï¼å¦å请æ±è¿äºèµæºæ件ä¼è¿åï¼
<!-- éæèµæºæ å° -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- å½ä¸é¢è¦è®¿é®çéæèµæºä¸å æ¬å¨ä¸é¢çé ç½®ä¸æ¶ï¼åæ ¹æ®æ¤é ç½®æ¥è®¿é® -->
<mvc:default-servlet-handler/>
å¼å¯Controller注解æ¯æï¼å¹¶é ç½®åªæ«ææå®å ä¸é¢çControllerï¼
<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
é ç½®è§å¾è§£æå¨ï¼å¹¶æå®è§å¾æå¨çæ件夹ï¼
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
æ·»å HelloWorldControllerï¼å¨é¡¹ç®ä¸æ°å»ºä¸ä¸ªwebçSource Folderæ件夹ï¼å¹¶å¨æ件夹ä¸é¢æ·»å com.demo.web.controllerså ï¼å¨å ä¸æ·»å ä¸ä¸ªHelloWorldControllerç±»ï¼ç±»ä¸å 容å¦ä¸ï¼
package com.demo.web.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping(value = "/helloworld")
public class HelloWorldController {
@RequestMapping(value="/index", method = { RequestMethod.GET})
public ModelAndView index(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "Hello World!");
modelAndView.setViewName("index");
return modelAndView;
}
}
å ¶ä¸@Controller 注解æ该classæå®ä¸ºcontrollerï¼controller ä¸ç@RequestMapping 注解ç valueå¼æå®è¯¥controllerææ å°ç请æ±ã
æ¹æ³ä¸ç@RequestMapping 注解æå®è¯¥æ¹æ³ä¸ºä¸ä¸ªactionï¼value å¼æå®è¯¥actionææ å°ç请æ±ï¼method ä¸çRequestMethod.GETæå®è¯¥actionåªæ¥åget请æ±ã
ModelAndView ä¸çsetViewNameæå®äºè¯¥actionæ对åºçè§å¾å称ï¼è§£æè§å¾æ¶ä¼å¨springservlet-config.xmlæ件æå®çè§å¾æ件夹ä¸å¯»æ¾å¯¹åºçè§å¾ã
æ·»å è§å¾ï¼å¨é¡¹ç®/WEB-INFæ件夹ä¸æ°å»ºä¸ä¸ªviewsæ件夹ï¼å¹¶å¨viewsä¸æ·»å index.jspè§å¾ï¼è§å¾å 容å¦ä¸ï¼
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4. Transitional//EN" "ponents.client5:httpclient5 替代。
8. **升级 Spring Security**: Spring Boot 3.0 使用 Spring Security 6.0。源码弃用 WebSecurityConfigurerAdapter,源码推荐基于组件的源码安全配置。
9. **Spring Kafka 模板升级**: KafkaTemplate 方法现在返回 CompletableFuture 而不是源码 ListenableFuture。更新 Kafka 模板以使用 CompletableFuture。源码股票 app 源码
. **Spring Doc OpenAPI 升级**: 为 Spring Boot 项目生成 API 文档时,源码确保使用 springdoc-openapi v2。源码根据项目类型(WebMVC 或 WebFlux)在 pom.xml 文件中包含相应的源码依赖项。
通过这些步骤,源码开发人员可以顺利迁移至 Spring Boot 3.x 版本,源码充分利用新功能和改进,源码同时解决潜在的源码升级问题。在技术前沿,源码不断学习和应用新的源码工具和框架是提升开发效率和质量的关键。例如,JNPF快速开发平台提供了功能集大成者,广告信息词源码方便扩展和快速开发,帮助工程师节省时间,提高生产力。
手把手教你用Spring Boot搭建AI原生应用
作者 | 文心智能体平台 本文旨在引导快速构建AI原生应用,Spring AI提供了全面的核心功能,包括对话模型、提示词模板、Function Calling、源码资本管理规模结构化输出、生成、向量化和向量数据库等。这些功能旨在简化AI应用程序的开发,让AI成为应用开发的自然组成部分,而非附加。1. AI原生应用构建
AI原生应用是将AI能力作为核心价值,若剥离AI,网站页面的源码应用则无法存在。它要求在设计和开发过程中充分集成AI,数据和知识在应用中生成和消费,通过学习和适应增强AI功能,取代传统规则。 Spring AI项目旨在简化开发,借鉴Python项目如LangChain和LlamaIndex,但独立于这些项目,开源码怎么添加支持多种编程语言。其核心是提供抽象接口,使得大模型组件易于实现。2. 开发前准备
需Spring Boot 3.2.0+版本。在Maven项目中,添加Spring AI依赖,并配置环境变量,即可开始AI原生应用开发。3. Spring AI核心功能
对话模型:Chat Completion API利用预训练模型生成类人响应,支持代码集成。
提示词模板:结构化的提示词帮助模型生成准确内容,Spring AI提供多种角色模板。
Function Calling:连接外部工具,大模型智能调用函数,实现与API交互。
结构化输出:OutputParser将模型输出标准化,便于应用处理。
生成:集成图像生成API,支持模型间的切换。
向量化:Embedding Client处理文本向量化,用于语义分析和分类。
向量数据库:用于知识检索增强生成,提供多种向量库支持。
4. RAG检索增强生成
RAG解决大模型的局限性,通过外部数据增强回答准确性。Spring AI支持RAG技术,结合向量数据库和搜索。5. AI原生应用搭建
通过简历构建知识库,创建查询工具,设定应用人设,利用Spring AI框架整合这些组件,实现AI智能助手应用。 更多实战教程和案例可在文章中找到。