SpringBoot 开发入门—Springboot基础框架
ccwgpt 2024-11-06 09:42 28 浏览 0 评论
一、环境准备
Java:Spring Boot 3.0.2 需要 Java 17,并且与 Java 19 兼容
Maven:Apache Maven 3.5 或更高版本兼容
二、启动器
以下应用程序启动器由 Spring Boot 在该组下提供:org.springframework.boot
表 1.Spring 引导应用程序启动器
名字 | 描述 |
spring-boot-starter | 核心启动器,包括自动配置支持、日志记录和 YAML |
spring-boot-starter-amqp | 使用Spring AMQP和Rabbit MQ的入门 |
spring-boot-starter-aop | 使用Spring AOP和AspectJ进行面向方面的编程的入门器 |
spring-boot-starter-artemis | 使用 Apache Artemis 的 JMS 消息传递入门 |
spring-boot-starter-batch | 使用弹簧批处理的启动器 |
spring-boot-starter-cache | 使用 Spring 框架缓存支持的入门工具 |
spring-boot-starter-data-cassandra | 使用 Cassandra 分布式数据库和 Spring Data Cassandra 的入门 |
spring-boot-starter-data-cassandra-reactive | 使用 Cassandra 分布式数据库和 Spring Data Cassandra Reactive 的入门 |
spring-boot-starter-data-couchbase | 使用Couchbase面向文档的数据库和Spring Data Couchbase的入门 |
spring-boot-starter-data-couchbase-reactive | 用于使用 Couchbase 面向文档的数据库和 Spring Data Couchbase Reactive 的入门 |
spring-boot-starter-data-elasticsearch | 使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的入门工具 |
spring-boot-starter-data-jdbc | 使用Spring Data JDBC的入门器 |
spring-boot-starter-data-jpa | 将 Spring Data JPA 与 Hibernate 一起使用的入门程序 |
spring-boot-starter-data-ldap | 使用Spring Data LDAP的入门 |
spring-boot-starter-data-mongodb | 使用MongoDB面向文档的数据库和Spring Data MongoDB的入门 |
spring-boot-starter-data-mongodb-reactive | 使用MongoDB面向文档的数据库和Spring Data MongoDB反应式的入门 |
spring-boot-starter-data-neo4j | 使用 Neo4j 图形数据库和 Spring Data Neo4j 的入门 |
spring-boot-starter-data-r2dbc | 使用弹簧数据R2DBC的入门器 |
spring-boot-starter-data-redis | 将 Redis 键值数据存储与 Spring Data Redis 和 Lettuce 客户端一起使用的入门 |
spring-boot-starter-data-redis-reactive | 将 Redis 键值数据存储与 Spring Data Redis 反应式和生菜客户端一起使用的入门 |
spring-boot-starter-data-rest | 使用Spring Data REST通过REST公开Spring Data Repository的入门程序 |
spring-boot-starter-freemarker | 使用 FreeMarker 视图构建 MVC Web 应用程序的入门器 |
spring-boot-starter-graphql | 使用 Spring GraphQL 构建 GraphQL 应用程序的入门器 |
spring-boot-starter-groovy-templates | 使用 Groovy 模板视图构建 MVC Web 应用程序的入门工具 |
spring-boot-starter-hateoas | 使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门 |
spring-boot-starter-integration | 使用弹簧集成的启动器 |
spring-boot-starter-jdbc | 将 JDBC 与 HikariCP 连接池一起使用的入门 |
spring-boot-starter-jersey | 使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序的入门工具。弹簧启动启动网的替代方案 |
spring-boot-starter-jooq | 使用 jOOQ 通过 JDBC 访问 SQL 数据库的入门工具。spring-boot-starter-data-jpa 或 spring-boot-starter-jdbc 的替代方案 |
spring-boot-starter-json | 用于读取和写入 json 的入门器 |
spring-boot-starter-mail | 使用Java Mail和Spring Framework的电子邮件发送支持的入门 |
spring-boot-starter-mustache | 使用 Mustache 视图构建 Web 应用程序的入门器 |
spring-boot-starter-oauth2-client | 使用Spring Security的OAuth2 / OpenID Connect客户端功能的入门 |
spring-boot-starter-oauth2-resource-server | 使用Spring Security的OAuth2资源服务器功能的入门 |
spring-boot-starter-quartz | 使用石英调度程序的入门器 |
spring-boot-starter-rsocket | 用于构建 RSocket 客户端和服务器的入门器 |
spring-boot-starter-security | 使用弹簧安全性的入门 |
spring-boot-starter-test | 用于测试Spring Boot应用程序的入门器,包括JUnit Jupiter,Hamcrest和Mockito等库 |
spring-boot-starter-thymeleaf | 使用 Thymeleaf 视图构建 MVC Web 应用程序的入门器 |
spring-boot-starter-validation | 将 Java Bean Validation 与 Hibernate Validator 结合使用的入门程序 |
spring-boot-starter-web | 用于构建Web的入门工具,包括使用Spring MVC构建Web(包括RESTful)的应用程序。使用 Tomcat 作为默认的嵌入式容器 |
spring-boot-starter-web-services | 使用 Spring Web 服务的入门器 |
spring-boot-starter-webflux | 使用 Spring Framework 的响应式 Web 支持构建 WebFlux 应用程序的入门工具 |
spring-boot-starter-websocket | 使用Spring Framework的MVC WebSocket支持构建WebSocket应用程序的入门工具 |
除了应用程序启动器之外,以下启动器还可用于添加生产就绪功能:
表 2.Springboot启动器
名字 | 描述 |
spring-boot-starter-actuator | 使用Spring Boot执行器的入门,该执行器提供生产就绪功能,可帮助您监视和管理应用程序 |
最后,Spring Boot 还包括以下启动器,如果要排除或交换特定的技术方面,可以使用它们:
表 3.Springboot技术启动器
名字 | 描述 |
spring-boot-starter-jetty | 使用 Jetty 作为嵌入式 servlet 容器的入门工具。弹簧启动启动器-雄猫的替代品 |
spring-boot-starter-log4j2 | 使用 Log4j2 进行日志记录的入门程序。弹簧引导启动日志记录的替代方案 |
spring-boot-starter-logging | 使用回日志进行日志记录的启动器。默认日志记录启动器 |
spring-boot-starter-reactor-netty | 使用 Reactor Netty 作为嵌入式反应式 HTTP 服务器的入门程序。 |
spring-boot-starter-tomcat | 使用 Tomcat 作为嵌入式 servlet 容器的入门工具。spring-boot-starter-web 使用的默认 servlet 容器启动器 |
spring-boot-starter-undertow | 使用 Undertow 作为嵌入式 servlet 容器的入门工具。弹簧启动启动器-雄猫的替代品 |
要了解如何交换技术方面,请参阅交换 Web 服务器和日志记录系统的操作文档。
三、配置类
Spring Boot 倾向于基于 Java 的配置。 尽管SpringApplication 可以与 XML 源一起使用,但我们通常建议将主源设置为单个类@Configuration。 通常,用@Configuration定义一个有main方法的类。
3.1. 导入其他配置类
当你不需要把所有的东西都放在一个Class里时。 @Import注释可用于导入其他配置类。或者,您可以使用@ComponentScan 自动加载所有 Spring 组件,包括类。
@Import({ 类名.class , 类名.class... })
public class Appcalss {
}
3.2自动配置
Spring Boot的自动装配机制会试图根据你所添加的依赖来自动配置你的Spring应用程序。 例如,如果你添加了 HSQLDB 依赖,而且你没有手动配置任何DataSource Bean,那么Spring Boot就会自动配置内存数据库。
你需要将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到你的 @Configuration 类中,从而开启自动配置功能。
@EnableAutoConfiguration:启用Spring Boot的自动配置机制,类似在java代码中自动import,属于自动导入
@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ SomeConfiguration.class, AnotherConfiguration.class })
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
禁用特定的自动配置类
如果发现正在应用不需要的特定自动配置类,则可以使用 的 exclude 属性来禁用它们,如以下示例所示:@SpringBootApplication
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {
}
四、Spring Bean 和 依赖注入
你可以使用任何标准的Spring技术来定义你的Bean以及依赖注入关系。 推荐使用构造函数注入,并使用 @ComponentScan 注解来扫描Bean。
如果你按照上面的建议构造你的代码(将你的启动类定位在顶级包中),你可以在启动类添加 @ComponentScan 注解,也不需要定义它任何参数, 你的所有应用组件(@Component、@Service、@Repository、@Controller 和其他)都会自动注册为Spring Bean。
也可以直接使用 @SpringBootApplication 注解(该注解已经包含了 @ComponentScan)。
下面的例子展示了一个 @Service Bean,它使用构造器注入的方式注入了 RiskAssessor Bean。
五、使用@SpringBootApplication注释
许多 Spring Boot 开发人员喜欢他们的应用程序使用自动配置、组件扫描并能够在他们的“应用程序类”上定义额外的配置。 单个注释可用于启用这三个功能,即:@SpringBootApplication
// Same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
六、开发一个 SpringBoot应用程序
在开始之前,请打开终端并运行以下命令以确保已安装有效版本的 Java 和 Maven:
$ java -version
openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)
mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: usr/Users/developer/tools/maven/3.8.5
Java version: 17.0.4.1, vendor: BellSoft, runtime: /Users/developer/sdkman/candidates/java/17.0.4.1-librca
1、创建 POM
我们需要从创建一个 Maven 文件开始。
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.2</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
2、添加类路径依赖
在此之前,我们可以通过运行以下命令来查看我们当前拥有的内容:spring-boot-starter-web
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
由于我们正在开发一个 Web 应用程序,因此我们添加一个依赖项
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3、编写代码
为了完成我们的应用程序,我们需要创建一个 Java 文件。 默认情况下,Maven 从 编译源代码,因此您需要创建该目录结构,然后添加一个名为以包含以下代码的文件:src/main/javasrc/main/java/MyApplication.java
@RestController
@SpringBootApplication
public class MyApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@RestController:相当于@ResponseBody + @Controller,@Controller注解表示后,该类将会被spring管理,@ResponseBody注解标识后,响应数据可以是文本或者JSON数据类型
@RequestMapping:是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。
七、Tracing
Spring Boot 提供依赖管理和自动配置Micrometer Tracing,这是常用信息监控库 。
Spring Boot 为以下跟踪器提供自动配置:
我们需要一个可用于开始跟踪的示例应用程序。 就我们的目的而言,“入门.html部分中介绍的简单”Hello World!“Web 应用程序就足够了。 我们将使用OpenTelemetry跟踪器与Zipkin作为跟踪后端。
回顾一下,我们的主要应用程序代码如下所示:
@RestController
@SpringBootApplication
public class MyApplication{
privatestaticfinal Log logger = LogFactory.getLog(MyApplication.class);
@RequestMapping("/")
String home(){
logger.info("home() has been called");
return"Hello World!";
}
public static void main(String[] args){
SpringApplication.run(MyApplication.class, args);
}
}
该方法中添加了一个记录器语句,稍后会很重要。home()
现在我们必须添加以下依赖项:
添加以下应用程序属性:
management.tracing.sampling.probability=1.0
默认情况下,Spring Boot 仅对 10% 的请求进行采样,以防止跟踪后端不堪重负。 此属性将其切换为 100%,以便将每个请求发送到跟踪后端。
为了收集和可视化跟踪,我们需要一个正在运行的跟踪后端。 我们在这里使用 Zipkin 作为我们的跟踪后端。 Zipkin 快速入门指南提供了如何在本地启动 Zipkin 的说明。
Zipkin 运行后,您可以启动应用程序。
八、日志记录
Spring Boot 没有强制性的日志记录依赖项,除了通常由 Spring Framework 模块提供的 Commons Logging API。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是通过启动器,这完全取决于 . 对于 Web 应用程序,您只需要 ,因为它以传递方式依赖于日志记录启动器。 如果使用 Maven,则以下依赖项会为您添加日志记录:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot 有一个抽象,它试图根据类路径的内容配置日志记录。 如果 Logback 可用,则它是首选。LoggingSystem
如果需要对日志记录进行的唯一更改是设置各种记录器的级别,则可以使用“logging.level”前缀执行此操作,如以下示例所示:application.properties
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
除了控制台之外,您还可以使用 设置要将日志写入的文件的位置。要配置日志记录系统的更细粒度设置,您需要使用相关支持的本机配置格式。 默认情况下,Spring 引导从系统的默认位置(例如 Logback)选取本机配置,但您可以使用该属性设置配置文件的位置。
1、为日志记录配置回日志
如果需要将自定义应用于 logback,而不是可以使用 实现的自定义项,则需要添加标准 logback 配置文件。 您可以将文件添加到类路径的根目录中,以便进行回查
Spring 引导提供了许多登录配置,这些配置可以在您自己的配置中。 这些包括旨在允许重新应用某些常见的 Spring 引导约定。included
以下文件在 下提供:org/springframework/boot/logging/logback/
- defaults.xml- 提供转换规则、模式属性和常用记录器配置。
- console-appender.xml- 使用 .ConsoleAppenderCONSOLE_LOG_PATTERN
- file-appender.xml- 使用适当的设置添加 和。RollingFileAppenderFILE_LOG_PATTERNROLLING_FILE_NAME_PATTERN
此外,还提供了旧文件以与早期版本的 Spring Boot 兼容。base.xml
典型的自定义文件如下所示:logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
您的登录配置文件还可以利用负责为您创建的系统属性:
- ${PID}:当前进程 ID。
- ${LOG_FILE}:是否在引导的外部配置中设置。logging.file.name
- ${LOG_PATH}:是否在 Boot 的外部配置中设置了(表示日志文件所在的目录)。logging.file.path
- ${LOG_EXCEPTION_CONVERSION_WORD}:是否在引导的外部配置中设置。logging.exception-conversion-word
- ${ROLLING_FILE_NAME_PATTERN}:是否在引导的外部配置中设置。logging.pattern.rolling-file-name
Spring Boot 还通过使用自定义 Logback 转换器在控制台上(但不在日志文件中)提供了一些不错的 ANSI 颜色终端输出
2、配置 log4j 用于日志记录
Spring Boot 支持 Log4j 2 进行日志记录配置,如果它位于类路径上。 如果使用启动器来组装依赖项,则必须排除 Logback,然后改为包含 Log4j 2。 如果您不使用启动器,除了 Log4j 2 之外,您还需要(至少)提供。
推荐的路径是通过启动器,即使它需要一些摇晃。 以下示例显示了如何在 Maven 中设置启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
九、配置 SSL
可以通过设置各种属性(通常在 或 中)以声明方式配置 SSL。 以下示例显示如何使用 Java 密钥库文件设置 SSL 属性:server.ssl.*
server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=secret
server.ssl.key-password=another-secret
十、Lazy Initialization
SpringApplication允许应用程序被懒初始化。 当启用懒初始化时,Bean在需要时被创建,而不是在应用程序启动时。 因此,懒初始化可以减少应用程序的启动时间。 在一个Web应用程序中,启用懒初始化后将导致许多与Web相关的Bean在收到HTTP请求之后才会进行初始化。
懒初始化的一个缺点是它会延迟发现应用程序的问题。 如果一个配置错误的Bean被懒初始化了,那么在启动过程中就不会再出现故障,问题只有在Bean被初始化时才会显现出来。 还必须注意确保JVM有足够的内存来容纳应用程序的所有Bean,而不仅仅是那些在启动期间被初始化的Bean。 由于这些原因,默认情况下不启用懒初始化,建议在启用懒初始化之前,对JVM的堆大小进行微调。
spring.main.lazy-initialization=true
如果你想禁用某些Bean的懒初始化,同时对应用程序的其他部分使用懒初始化,你可以使用 注解将其'Lazy' 属性显式地设置为 false。@Lazy(false)
十一、优雅停机
所有四个嵌入式Web服务器(Jetty、Reactor Netty、Tomcat和Undertow)以及基于响应式和Servlet的Web应用都支持优雅关闭。 它作为关闭应用程序上下文的一部分发生,并在停止 SmartLifecycle bean的最早阶段执行。 这种停止处理使用一个超时,提供一个宽限期,在此期间,现有的请求将被允许完成,但不允许有新的请求。 不允许新请求的确切方式取决于正在使用的网络服务器。 Jetty、Reactor Netty和Tomcat将在网络层停止接受请求。 Undertow将接受请求,但立即响应服务不可用(503)的回应。
server:
shutdown: "graceful"
文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群你的支持和鼓励是我创作的动力???
Doker的成长,欢迎大家一起陪伴!!!
我发好文,兄弟们有空请把我的官方旗舰店流量撑起来!!!
官网:Doker 多克; 官方旗舰店:首页-Doker 多克 多克创新科技企业店-淘宝网 全品优惠
相关推荐
- 如何基于Spring Security框架实现权限管理
-
SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护基于Spring的应用程序。SpringSecurity主要是从两个方面解决安全性问题:web请求级别:使...
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
-
一、框架介绍Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。官网文档:...
- 16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token
-
简介今天给大家推荐一个轻量级的Java权限认证框架——Sa-Token。它可以为JavaWeb应用同完整的权限认证解决方案,它的目标是简化权限管理和登录认证的流程,具备高度灵活性和简单易用的特点。S...
- 从Shiro迁移到Sa-Token:老版JeecgBoot项目权限框架平滑升级方案
-
背景介绍对于许多维护老版JeecgBoot项目的开发者来说,权限框架的升级一直是个棘手问题。这篇文章分享一种实用的方案,用于将老版JeecgBoot中的ApacheShiro替换为更现代的Sa-To...
- 刑法框架体系,对照着框架体系学习可以事半功倍哦
-
有了它,妈妈再也不用担心我司考过不啦!有了它,妈妈再也不用担心我司考过不了啦!其他部门法正在陆续整理制作中哦看不清的话请戳http://mp.weixin.qq.com/s?__biz=MzA3NDE...
- 全新体验版Windows QQ上线,实现三端统一
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...
- 农村自建房造价多少?包工头教你怎么算
-
通常我们在找专业人士设计农村自建房设计图时,不管你是打算建独栋一层别墅还是独栋二层别墅或是独栋三层别墅,你是否也找他们打听过相应的房屋工程造价呢?下面简单介绍一下农村自建房的傻瓜式造价估算:1、砖混结...
- QQ大会员品牌运营策划与设计(qq大会员有哪些个性装扮)
-
编辑导语:在互联网产品越来越同质化的今天,做出有差异性和符合品牌调性的设计是品牌运营过程中需要重视的问题。本文作者从QQ大会员品牌项目实践出发,分享了品牌运营设计过程中遇到的一些问题以及具体操作方案,...
- 支持鸿蒙平台,腾讯视频ovCompose跨平台框架发布
-
IT之家6月3日消息,腾讯开源今日官宣发布腾讯视频ovCompose跨平台框架,其是腾讯大前端领域Oteam中,腾讯视频团队基于ComposeMultiplatform生态推出的...
- 腾讯 QQ Mac 版推倒重做,全新 1.0 版本开启内测
-
IT之家9月1日消息,据多位IT之家小伙伴投稿,腾讯QQMac版近日迎来了全新通用版内测,版本号重新由1.0开始,目前放出的体验版为1.0.4-305。从下图可以看到,该版本在U...
- 全新体验版Windows QQ正式上线官网,实现三端统一
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...
- QQ,到了不能不变的境地(怎么发qq邮件到别人邮箱)
-
相比微信一个小更新,乃至一个小动作,都能上热搜的顶级热度。隔壁的老大哥QQ,显得有些冷清。即使更新再快,功能再激情,都很难引起用户们的集体讨论。机友们细想一番,咱们的老朋友QQ,有多久没上过热搜啦?真...
- 基于Electron框架全面重做:全新Linux版QQ开启公测
-
来源:快科技不久前,腾讯QQ项目组曾发布预告,宣布QQforLinux新版本即将开启公测。现在,新的Linux版QQ已经开启公测,不过目前仅支持x86架构,arm64架构还仍在适配中。与此前极为简...
- QQ全面升级?基于Electron技术的Windows内测版本预计将于明年推出
-
在2022年,作为经典的聊天软件的QQ在经历多次的功能调整后,正式选择基于新技术开发新版本的QQ。今日,据相关媒体报道,腾讯QQ项目组发布预告:QQforLinux将在本周迎来公测,全新的QQf...
- 跨平台三端重构正式统一,QQ Windows全新体验版上架官网
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构,实现了桌面端Q...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 如何基于Spring Security框架实现权限管理
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
- 16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token
- 从Shiro迁移到Sa-Token:老版JeecgBoot项目权限框架平滑升级方案
- 刑法框架体系,对照着框架体系学习可以事半功倍哦
- 全新体验版Windows QQ上线,实现三端统一
- 农村自建房造价多少?包工头教你怎么算
- QQ大会员品牌运营策划与设计(qq大会员有哪些个性装扮)
- 支持鸿蒙平台,腾讯视频ovCompose跨平台框架发布
- 腾讯 QQ Mac 版推倒重做,全新 1.0 版本开启内测
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)