欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot

程序员文章站 2022-03-04 13:49:03
...
Spring Boot 是微服务中最好的 Java 框架.

问题一 Spring Boot、Spring MVC 和 Spring 有什么区别?

SpringFramework 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。

Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,
MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。

Spring 和 SpringMVC 的问题在于需要配置大量的参数。

<bean
 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
  </bean>

  <mvc:resources mapping="/webjars/**" location="/webjars/"/>

如果你想开发一个 web 应用程序或者是公开 REST 服务的应用程序。Spring Boot Start Web 是首选。
让我们使用 Spring Initializr 创建一个 Spring Boot Start Web 的快速项目。

Spring Boot Start Web 的依赖项

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

依赖项可以被分为
1.Spring - core,beans,context,aop
2.Web MVC - (Spring MVC)
3.Jackson - for JSON Binding
4.Enbedded Servlet Container - Tomcat
5.Logging - logback,slf4j
6.任何经典的 Web 应用程序都会使用所有这些依赖项。Spring Boot Starter Web 预先打包了这些依赖项。

Spring Boot 还提供了其它的哪些 Starter Project Options?
1.spring-boot-starter-web - Web 和 RESTful 应用程序
2.spring-boot-starter-jdbc - 传统的 JDBC
3.spring-boot-starter-security - 使用 SpringSecurity 进行身份验证和授权
4.spring-boot-starter-data-rest - 使用 Spring Data REST 公布简单的 REST 服务

Spring 是如何快速创建产品就绪应用程序的?
Spring Boot 致力于快速产品就绪应用程序。为此,它提供了一些譬如高速缓存,日志记录,监控和嵌入式
服务器等开箱即用的非功能性特征。

Spring2 和 Spring5 所需要的最低 Java 版本是什么?
Spring Boot 2.0 需要 Java8 或者更新的版本。Java6 和 Java7 已经不再支持。

什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

思考一下在你的虚拟机上部署应用程序需要些什么。
第一步: 安装 Java
第二部: 安装 Web 或者是应用程序的服务器(Tomat/Wbesphere/Weblogic 等等)
第三部: 部署应用程序 war 包

让我们来思考如何使服务器成为应用程序的一部分?
你只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了,是不是很爽?
这个想法是嵌入式服务器的起源。

对于一个 Spring Boot 应用程序来说,你可以生成一个包含 Embedded Tomcat 的应用程序 jar。
你就可以想运行正常 Java 应用程序一样来运行 web 应用程序了。

嵌入式服务器就是我们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。

如何在 Spring Boot 中添加通用的 JS 代码?

在源文件夹下,创建一个名为 static 的文件夹。然后,你可以把你的静态的内容放在这里面。

例如,myapp.js 的路径是 resources\static\js\myapp.js

<script src="/js/myapp.js"></script>

{
  "timestamp": 1488656019562,
  "status": 401,
  "error": "Unauthorized",
  "message": "Full authentication is required to access this resource.",
  "path": "/beans"
}

方法 1:关闭安全验证

application.properties

management.security.enabled:FALSE

我们能否在 spring-boot-starter-web 中用 jetty 代替 tomcat?

在 spring-boot-starter-web 移除现有的依赖项,并把下面这些添加进去。

<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>

RequestMapping 和 GetMapping 的不同之处在哪里?
1.RequestMapping 具有类属性的,可以进行 GET,POST,PUT 或者其它的注释中具有的请求方法。
2.GetMapping 是 GET 请求方法中的一个特例。它只是 ResquestMapping 的一个延伸,目的是为了提高
清晰度。

JPA 和 Hibernate 有哪些区别?

1.JPA 是一个规范或者接口
2.Hibernate 是 JPA 的一个实现

我们如何连接一个像 MYSQL 或者 orcale 一样的外部数据库?

第一步 - 把 mysql 连接器的依赖项添加至 pom.xml
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

第二步 - 从 pom.xml 中移除 H2 的依赖项
<!--
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
-->   

第四步 - 配置你的 MySQL 数据库连接

配置 application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/todo_example
spring.datasource.username=todouser
spring.datasource.password=YOUR_PASSWORD   

Spring Boot 配置的默认 H2 数据库的名字是上面?为什么默认的数据库名字是 testdb?
在 application.properties 里面,列出了所有的默认值
spring.datasource.name=testdb # Name of the datasource.

Spring boot整理

1、什么是springboot 

1.用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)

2.嵌入的Tomcat 无需部署war文件 

3.简化maven配置 

4.spring boot来简化spring应用开发,约定大于配置,去繁从简

2、Spring Boot有哪些优点? 

1.快速创建独立运行的spring项目与主流框架集成 

2.使用嵌入式的servlet容器,应用无需打包成war包 

3.starters自动依赖与版本控制 

4.大量的自动配置,简化开发,也可修改默认值 

5.准生产环境的运行应用监控 

3、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 
Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个
主要挑战是将文件更改自动部署到服务器并自动重启服务器。 

6、如何集成Spring Boot和ActiveMQ? 
对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。 它只需要很少的
配置,并且不需要样板代码。

7、springboot常用的starter有哪些 
1.spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持 
2.spring-boot-starter-data-redis redis数据库支持 
3.spring-boot-starter-data-solr solr支持
4.mybatis-spring-boot-starter 第三方的mybatis集成starter

8、springboot自动配置的原理 
在spring程序main方法中 添加@SpringBootApplication或者
@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 
该文件里配置了所有需要被创建spring容器中的bean

9、springboot读取配置文件的方式 
springboot默认读取配置文件为application.properties或者是application.yml

10、springboot集成mybatis的过程 
添加mybatis的starter maven依赖org.mybatis.spring.boot mybatis-spring-boot-starter 
在mybatis的接口中 添加@Mapper注解,在application.yml配置数据源信息.