您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

为什么Java程序员必须要会SpringBoot?

时间:2020-07-11 14:24:46  来源:  作者:

各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题

为什么要用 Spring Boot?

Spring Boot 来自于 Spring 大家族,是 Spring 官方团队(Pivotal 团队)提供的全新框架,它的诞生解决了 Spring 框架使用较为繁琐的问题。Spring Boot 的核心思想是约定优于配置,让开发人员不需要配置任何 XML 文件,就可以像 Maven 整合 Jar 包一样,整合并使用所有框架。

Spring Boot 特性

  • 秒级构建一个项目;
  • 便捷的对外输出格式,如 REST API、WebSocket、Web 等;
  • 简洁的安全集成策略;
  • 内嵌容器运行,如 Tomcat、Jetty;
  • 强大的开发包,支持热启动;
  • 自动管理依赖;
  • 自带应用监控。

Spring Boot 2 对系统环境的要求

  • JAVA 8+
  • Gradle 4+ or Maven 3.2+
  • Tomcat 8+

Spring Boot 使用

在开始之前,我们先来创建一个Spring Boot 项目。

Spring Boot 有两种快速创建的方式:Spring 官网在线网站创建和 IntelliJ IDEA 的 Spring Initializr 创建,下面分别来看。

创建 Spring Boot 项目

1)在线网站创建

在浏览器输入 https://start.spring.io,页面打开如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

填写相应的项目信息,选择对应的 Spring Boot 和 Java 版本点击 “Generate the project”按钮下载项目压缩文件,解压后用 IDEA 打开即可。

其中 Group 和 Artifact 是 Maven 项目用来确认依赖项目的标识,比如:

‹dependency›
    ‹groupId›org.springframework‹/groupId›
    ‹artifactId›spring-core‹/artifactId›
    ‹version›4.1.6.RELEASE‹/version›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

Group 对应的是配置文件的 groupId,相当于项目的包名;而 Artifact 对应的是配置文件的 artifactId,相当于项目名。

2)使用 IntelliJ IDEA 创建

① 新建项目 → 选择 Spring Initialzr,如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

② 点击 Next 按钮,填写对应的项目信息(和在线网站创建的字段基本相同),如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

③ 点击 Next 按钮,选择相应的依赖信息,如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

④ 点击 Next 按钮,选择项目保存的路径,点击 Finish 创建项目完成,如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

创建一个 Web 应用

1)pom.xml 中添加 Web 模块的依赖,如下所示:

‹dependency›
  ‹groupId›org.springframework.boot‹/groupId›
  ‹artifactId›spring-boot-starter-web‹/artifactId›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

2)创建后台代码

import org.springframework.web.bind.annotation.RequestMApping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class HelloController {
    @RequestMapping("/index")
    public String index(String name) {
        return "Hello, " + name;
    }
}
为什么Java程序员必须要会SpringBoot?

 

3)启动并访问项目

项目的启动类是标识了 @Spring BootApplication 的类,代码如下所示:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootlearningApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootlearningApplication.class, args);
    }
}
为什么Java程序员必须要会SpringBoot?

 

启动并访问 http://localhost:8080/index?name=laowang 效果如下:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

到目前为止 Spring Boot 的项目就创建并正常运行了。

设置配置文件

Spring Boot 的配置文件,是 resources 目录下 application.properties 文件,如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

可以在配置文件中设置很多关于 Spring 框架的配置,格式如下配置所示:

# 项目运行端口
server.port=8086
# 请求编码格式
server.tomcat.uri-encoding=UTF-8

Spring Boot 的其他功能开发和 Spring 相同(Spring Boot 2 是基于 Spring Framework 5 构建的),本文就不过多的介绍了,感兴趣的朋友可以点击这里查看

Spring Boot 发布

Spring Boot 项目的发布方式有两种:

  • 内置容器运行
  • 外置容器(Tomcat)运行

内置容器运行

1)打包应用

使用窗口命令,在 pom.xml 同级目录下:

mvn clean package -Dmaven.test.skip=true

Dmaven.test.skip=true 表示不执行测试用例,也不编译测试用例类。

2)启动应用

后台启动 Java 程序, 命令如下:

nohup java -jar springbootlearning-0.0.1-SNAPSHOT.jar &

停止程序

首先查询 Java 程序的 pid

ps -ef|grep java

再停止程序

kill -9 pid

操作如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

扩展内容

指定程序运行日志文件

nohup java -jar springbootlearning-0.0.1-SNAPSHOT.jar 1››logs 2››errlog &

其中:

  • 1:表示普通日志
  • 2:表示错误日志

外置容器(Tomcat)运行

1)排除内置 Tomcat

‹dependency›
    ‹groupId›org.springframework.boot‹/groupId›
    ‹artifactId›spring-boot-starter-tomcat‹/artifactId›
    ‹scope›provided‹/scope›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

将 scope 属性设置为 provided,表示打包不会包含此依赖。

2)配置启动类

在项目的启动类中继承 Spring BootServletInitializer 并重写 configure() 方法:

@SpringBootApplication
public class PackageApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(PackageApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(PackageApplication.class, args);
    }
}
为什么Java程序员必须要会SpringBoot?

 

3)打包应用

使用窗口命令,在 pom.xml 同级目录下:

mvn clean package -Dmaven.test.skip=true

4)部署应用

打包完成会在 target 目录下生成:项目名 + 版本号.war 文件,复制到 Tomcat 的 webapps 目录下,运行 Tomcat 即可。

相关面试题

1.Spring Boot 2.0 支持最低的 JDK 版本是?

A:JDK 6B:JDK 7C:JDK 8D:JDK 9

答:C

2.Spring、Spring Boot、Spring Cloud 是什么关系?

答:它们都是来自于 Spring 大家庭,Spring Boot 是在 Spring 框架的基础上开发而来,让更加方便使用 Spring;Spring Cloud 是依赖于 Spring Boot 而构建的一套微服务治理框架。

3.Spring Boot 项目有哪些优势?

答:Spring Boot 项目优势如下:

  • 开发变得简单,提供了丰富的解决方案,快速集成各种解决方案提升开发效率;
  • 配置变得简单,提供了丰富的 Starters,集成主流开源产品往往只需要简单的配置即可;
  • 部署变得简单,其本身内嵌启动容器,仅仅需要一个命令即可启动项目,结合 Jenkins、Docker 自动化运维非常容易实现;
  • 监控变得简单,自带监控组件,使用 Actuator 轻松监控服务各项状态。

4.如何将 Spring Boot 项目打包成 war 包?

答:在 pom.xml 里设置 ‹packaging›war‹/packaging› 。

5.在 Maven 项目中如何修改打包名称?

答:在 pom.xml 文件的 build 节点中,添加 finalName 节点并设置为要的名称即可,配置如下:

‹build›
  ‹finalName›warName‹/finalName›
‹/build›

6.Ant、Maven、Gradle 有什么区别?

答:Ant、Maven、Gradle 是 Java 领域中主要有三大构建工具,它们的区别如下:

  • Ant(AnotherNeatTool)诞生于 2000 年,是由 Java 编写,采用 XML 作为构建脚本,这样就允许你在任何环境下运行构建。Ant 是 Java 领域最早的构建工具,不过因为操作复杂,慢慢的已经被淘汰了;
  • Maven 诞生于 2004 年,目的是解决程序员使用 Ant 所带来的一些问题,它的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性;
  • Gradle 诞生于 2009 年,是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。结合了前两者的优点,在此基础之上做了很多改进,它具有 Ant 的强大和灵活,又有 Maven 的生命周期管理且易于使用。

Spring Boot 官方支持 Maven 和 Gradle 作为项目构建工具。Gradle 虽然有更好的理念,但是相比 Maven 来讲其行业使用率偏低,并且 Spring Boot 官方默认使用 Maven。

7.Maven 如何设置发布的包名?

答:在 build 节点下设置 finalName 就是发布的包名,如下代码所示:

‹build›
     ‹finalName›biapi‹/finalName›
‹/build›

8.Spring Boot 热部署有几种方式?

答:Spring Boot 热部署主要有两种方式:Spring Loaded、Spring-boot-devtools。

方式 1:Spring Loaded

在 pom.xml 文件中添加如下依赖:

‹plugin›
      ‹groupId›org.springframework.boot‹/groupId›
      ‹artifactId›spring-boot-maven-plugin‹/artifactId›
      ‹dependencies›
        ‹dependency›
          ‹groupId›org.springframework‹/groupId›
          ‹artifactId›springloaded‹/artifactId›
          ‹version›1.2.6.RELEASE‹/version›
        ‹/dependency›
      ‹/dependencies›
      ‹configuration›
        ‹mainClass›此处为入口类‹/mainClass›
      ‹/configuration›
 ‹/plugin›
为什么Java程序员必须要会SpringBoot?

 

方式 2:Spring-boot-devtools

在 pom.xml 文件中添加如下依赖:

‹dependency›
      ‹groupId›org.springframework.boot‹/groupId›
      ‹artifactId›spring-boot-devtools‹/artifactId›
      ‹scope›provided‹/scope›
      ‹optional›true‹/optional›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

9.Spring Boot 2.0 可以在 Tomcat 7 运行吗?为什么?

答:Spring Boot 2.0 无法在 Tomcat 7 上运行。因为 Spring Boot 2.0 使用的是 Spring Framework 5,Spring Framework 5 使用的是 Servlet 3.1,而 Tomcat 7 最高支持到 Servlet 3.0,所以 Spring Boot 2.0 无法在 Tomcat 7 上运行。

10.如何使用 Jetty 代替 Tomcat?

答:在 spring-boot-starter-web 移除现有的依赖项,添加 Jetty 依赖,配置如下:

‹dependency›
    ‹groupId›org.springframework.boot‹/groupId›
    ‹artifactId›spring-boot-starter-web‹/artifactId›
    ‹exclusions›
        ‹exclusion›
            ‹groupId›org.springframework.boot‹/groupId›
            ‹artifactId›spring-boot-starter-tomcat‹/artifactId›
        ‹/exclusion›
    ‹/exclusions›
‹/dependency›
‹dependency›
    ‹groupId›org.springframework.boot‹/groupId›
    ‹artifactId›spring-boot-starter-jetty‹/artifactId›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

11.Spring Boot 不支持以下哪个内嵌容器?

A:TomcatB:JettyC:UndertowD:Nginx

答:D

题目解析:Jetty 容器支持如下:

‹dependency›
   ‹groupId›org.springframework.boot‹/groupId›
   ‹artifactId›spring-boot-starter-web‹/artifactId›
   ‹exclusions›
      ‹exclusion›
         ‹groupId›org.springframework.boot‹/groupId›
         ‹artifactId›spring-boot-starter-tomcat‹/artifactId›
      ‹/exclusion›
   ‹/exclusions›
‹/dependency›
‹dependency›
   ‹groupId›org.springframework.boot‹/groupId›
   ‹artifactId›spring-boot-starter-jetty‹/artifactId›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

Undertow 容器支持如下:

‹dependency›
    ‹groupId›org.springframework.boot‹/groupId›
    ‹artifactId›spring-boot-starter-web‹/artifactId›
    ‹exclusions›
        ‹exclusion›
            ‹groupId›org.springframework.boot‹/groupId›
            ‹artifactId›spring-boot-starter-tomcat‹/artifactId›
        ‹/exclusion›
    ‹/exclusions›
‹/dependency›
‹dependency›
    ‹groupId›org.springframework.boot‹/groupId›
    ‹artifactId›spring-boot-starter-undertow‹/artifactId›
‹/dependency›
为什么Java程序员必须要会SpringBoot?

 

12.Spring Boot 中配置文件有几种格式?

答:Spring Boot 中有 .properties 和 .yml 两种配置文件格式,它们主要的区别是书写格式不同。

.properties 配置文件格式如下:

app.user.name = hellojava

.yml 配置文件格式如下:

app:
    user:
        name: hellojava

13.项目中有两个配置 application.properties 和 application.yml,以下说法正确的是?

A:application.properties 的内容会被忽略,只会识别 application.yml 的内容。B:两个配置文件同时有效,有相同配置时,以 application.properties 文件为主。C:application.yml 的内容会被忽略,只会识别 application.properties 的内容。D:两个配置文件同时有效,有相同配置时,以 application.yml 文件为主。

答:B

14.RequestMapping 和 GetMapping 有什么不同?

答:RequestMapping 和 GetMapping 区别如下:

  • RequestMapping 可以支持 GET、POST、PUT 请求;
  • GetMapping 是一个组合注解,相当于 @RequestMapping(method = RequestMethod.GET)。

15.以下关于 @RestController 和 @Controller 说法正确的?

A:@Controller 返回 JSON 数据B:@RestController 返回 JSON 数据C:@APIController 返回 JSON 数据D:以上都对

答:B

16.Spring Cache 常用的缓存注解有哪些?

答:Spring Cache 常用注解如下:

  • @Cacheable:用来声明方法是可缓存,将结果存储到缓存中以便后续使用相同参数调用时不需执行实际的方法,直接从缓存中取值;
  • @CachePut:使用它标注的方法在执行前,不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中;
  • CacheEvict:是用来标注在需要清除缓存元素的方法或类上的,当标记在一个类上时表示其中所有方法的执行都会触发缓存的清除操作。

17.Spring Boot Admin 和 Spring Boot Actuator 的关系是什么?

答:Spring Boot Admin 使用了 Spring Boot Actuator 接口进行 UI 美化封装的监控工具,它以图形化的方式查询单个应用的详细状态,也可以使用 Spring Boot Admin 来监控整个集群的状态。

18.如何理解 Spring Boot 中的 Stater?

答:Stater 可以理解为启动器,它是方便开发者快速集成其他框架到 Spring 中的一种技术。比如,spring-boot-starter-data-jpa 就是把 JPA 快速集成到 Spring 中。

19.常见的 starter 有哪些?

答:常见的 starter 如下:

  • spring-boot-starter-web:Web 开发支持
  • spring-boot-starter-data-jpa:JPA 操作数据库支持
  • spring-boot-starter-data-redis:Redis 操作支持
  • spring-boot-starter-data-solr:Solr 权限支持
  • mybatis-spring-boot-starter:MyBatis 框架支持

20.Spring Boot Starter JDBC 和 Spring JDBC 有什么关系?

答:spring-boot-starter-jdbc 是 Spring Boot 针对 JDBC 的使用提供了对应的 Starter 包,在 Spring JDBC 上做了进一步的封装,方便在 Spring Boot 生态中更好的使用 JDBC。

21.Spring Boot 有哪几种读取配置的方式?

答:Spring Boot 可以通过 @Value、@Environment、@ConfigurationProperties 这三种方式来读取。

例如,配置文件内容如下:

app.name=中文

① Value 方式

@Value("${app.name}")
private String appName;

② Environment 方式

public class HelloController {
    @Autowired
    private Environment environment;
    @RequestMapping("/index")
    public String index(String hiName) {
        // 读取配置文件
        String appName = environment.getProperty("app.name");
        return "Hello, " + hiName + " |@" + appName;
    }
}
为什么Java程序员必须要会SpringBoot?

 

③ ConfigurationProperties 方式

@ConfigurationProperties(prefix = "app")
public class HelloController {
    // 读取配置文件,必须有 setter 方法
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    @RequestMapping("/index")
    public String index(String hiName) {
        System.out.println("appname:" + name);
        return "Hello, " + hiName + " |@" + appName;
    }
}
为什么Java程序员必须要会SpringBoot?

 

22.使用 @Value 读取中文乱码是什么原因?如何处理?

答:这是因为配置文件的编码格式导致的,需要把编码格式设置为 UTF-8,如下图所示:

为什么Java程序员必须要会SpringBoot?

 


为什么Java程序员必须要会SpringBoot?

 

设置完成之后,重新启动 IDEA 就可以正常显示中文了。

总结

通过本文我们学习了 Spring Boot 的两种创建方式:在线网站创建和 IntelliJ IDEA 方式创建。知道了 Spring Boot 发布的两种方式:内置容器和外置 Tomcat,知道了 Spring Boot 项目特性,以及配置文件 .properties 和 .yml 的差异,掌握了读取配置文件的三种方式:@Value、@Environment、@ConfigurationProperties。

下一篇:MyBatis 核心知识

在公众号[架构师修炼]菜单中可自行获取专属架构视频资料,包括不限于 java架构、Python系列、人工智能系列、架构系列,以及最新面试、小程序、大前端均无私奉献,你会感谢我的哈

往期精选(全集WX公号【架构师修炼】)

分布式数据之缓存技术,一起来揭开其神秘面纱

分布式数据复制技术,今天就教你真正分身术

数据分布方式之哈希与一致性哈希,我就是个神算子

分布式存储系统三要素,掌握这些就离成功不远了

想要设计一个好的分布式系统,必须搞定这个理论

分布式通信技术之发布订阅,干货满满

分布式通信技术之远程调用:RPC

消息队列Broker主从架构详细设计方案,这一篇就搞定主从架构

消息中间件路由中心你会设计吗,不会就来学学

消息队列消息延迟解决方案,跟着做就行了

秒杀系统每秒上万次下单请求,我们该怎么去设计

【分布式技术】分布式系统调度架构之单体调度,非掌握不可

CDN加速技术,作为开发的我们真的不需要懂吗?

烦人的缓存穿透问题,今天教就你如何去解决

分布式缓存高可用方案,我们都是这么干的

每天百万交易的支付系统,生产环境该怎么设置JVM堆内存大小

你的成神之路我已替你铺好,没铺你来捶我



Tags:SpringBoot   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: SpringBoot  点击:(21)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  Tags: SpringBoot  点击:(25)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  Tags: SpringBoot  点击:(56)  评论:(0)  加入收藏
1. 介绍1.1 介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲...【详细内容】
2021-11-05  Tags: SpringBoot  点击:(30)  评论:(0)  加入收藏
SpringBoot中的Controller注册本篇将会以Servlet为切入点,通过源码来看web容器中的Controller是如何注册到HandlerMapping中。请求来了之后,web容器是如何根据请求路径找到对...【详细内容】
2021-11-04  Tags: SpringBoot  点击:(53)  评论:(0)  加入收藏
环境:Springboot2.4.11环境配置接下来的演示都是基于如下接口进行。@RestController@RequestMapping("/exceptions")public class ExceptionsController { @GetMapping(...【详细内容】
2021-10-11  Tags: SpringBoot  点击:(41)  评论:(0)  加入收藏
SpringBoot项目默认使用logback, 已经内置了 logback 的相关jar包,会从resource包下查找logback.xml, logback 文件格式范本 可直接复制使用,有控制台 info.log error.log三个...【详细内容】
2021-10-09  Tags: SpringBoot  点击:(50)  评论:(0)  加入收藏
环境:Springboot2.4.10当应用程序启动时,Spring Boot将自动从以下位置查找并加载application.properties和application.yaml文件: 从Classpath类路径classpath的根类路径classp...【详细内容】
2021-09-26  Tags: SpringBoot  点击:(78)  评论:(0)  加入收藏
搭建基础1. Intellij IDEA 2. jdk1.8 3. maven3.6.3搭建方式(1)在线创建项目Spring Boot 官方提供的一种创建方式,在浏览器中访问如下网址: https://start.spring.io/在打开的页...【详细内容】
2021-09-14  Tags: SpringBoot  点击:(78)  评论:(0)  加入收藏
最近开发项目的时候需要用到对象的属性拷贝,以前也有用过一些复制框架,比如spring的 BeanUtils.copyProperties等方式,但总是不尽如人意,最近发现使用orika进行对象拷贝挺好用的...【详细内容】
2021-08-27  Tags: SpringBoot  点击:(231)  评论:(0)  加入收藏
▌简易百科推荐
面向对象的特征之一封装 面向对象的特征之二继承 方法重写(override/overWrite) 方法的重载(overload)和重写(override)的区别: 面向对象特征之三:多态 Instanceof关键字...【详细内容】
2021-12-28  顶顶架构师    Tags:面向对象   点击:(2)  评论:(0)  加入收藏
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(13)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(11)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(17)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(19)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条