SpringFramejava
SpringFramework 最重要的特征是依赖注入。全部 SpringModules 不是依赖注入就是 IOC 控制反转。程序员
当咱们恰当的使用 DI 或者是 IOC 的时候,咱们能够开发松耦合应用。松耦合应用的单元测试能够很容易的进行。web
SpringMVC面试
Spring MVC 提供了一种分离式的方法来开发 Web 应用。经过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的很是简单。spring
SpringBoot数据库
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/"/>
Spring Boot 经过一个自动配置和启动的项来目解决这个问题。为了更快的构建产品就绪应用程序,Spring Boot 提供了一些非功能性特征。json
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/"/>
咱们可否带来更多的智能?当一个 MVC JAR 添加到应用程序中的时候,咱们可否自动配置一些 beans?tomcat
Spring 查看(CLASSPATH 上可用的框架)已存在的应用程序的配置。在此基础上,Spring Boot 提供了配置应用程序和框架所须要的基本配置。这就是自动配置。
启动器是一套方便的依赖没描述符,它能够放在本身的程序中。你能够一站式的获取你所须要的 Spring 和相关技术,而不须要依赖描述符的经过示例代码搜索和复制黏贴的负载。
例如,若是你想使用 Sping 和 JPA 访问数据库,只须要你的项目包含 spring-boot-starter-data-jpa 依赖项,你就能够完美进行。
让咱们来思考一个 Stater 的例子 -Spring Boot Stater Web。
若是你想开发一个 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>
下面的截图是添加进咱们应用程序的不一样的依赖项
依赖项能够被分为
任何经典的 Web 应用程序都会使用全部这些依赖项。Spring Boot Starter Web 预先打包了这些依赖项。
做为一个开发者,我不须要再担忧这些依赖项和它们的兼容版本。
Spring Boot 也提供了其它的启动器项目包括,包括用于开发特定类型应用程序的典型依赖项。
spring-boot-starter-web-services - SOAP Web Services
spring-boot-starter-web - Web 和 RESTful 应用程序
spring-boot-starter-test - 单元测试和集成测试
spring-boot-starter-jdbc - 传统的 JDBC
spring-boot-starter-hateoas - 为服务添加 HATEOAS 功能
spring-boot-starter-security - 使用 SpringSecurity 进行身份验证和受权
spring-boot-starter-data-jpa - 带有 Hibeernate 的 Spring Data JPA
spring-boot-starter-data-rest - 使用 Spring Data REST 公布简单的 REST 服务
Spring Boot 致力于快速产品就绪应用程序。为此,它提供了一些譬如高速缓存,日志记录,监控和嵌入式服务器等开箱即用的非功能性特征。
spring-boot-starter-actuator - 使用一些如监控和跟踪应用的高级功能
spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 选择您的特定嵌入式 Servlet 容器
spring-boot-starter-logging - 使用 logback 进行日志记录
spring-boot-starter-cache - 启用 Spring Framework 的缓存支持
###Spring2 和 Spring5 所须要的最低 Java 版本是什么?
Spring Boot 2.0 须要 Java8 或者更新的版本。Java6 和 Java7 已经再也不支持。
Spring Initializr是启动 Spring Boot Projects 的一个很好的工具。
不是的。
Spring Initiatlizr 让建立 Spring Boot 项目变的很容易,可是,你也能够经过设置一个 maven 项目并添加正确的依赖项来开始一个项目。
在咱们的 Spring 课程中,咱们使用两种方法来建立项目。
第一种方法是 start.spring.io 。
另一种方法是在项目的标题为“Basic Web Application”处进行手动设置。
手动设置一个 maven 项目
这里有几个重要的步骤:
到这里,准备工做已经作好!
spring-boot-maven-plugin 提供了一些像 jar 同样打包或者运行应用程序的命令。
使用 Spring Boot 开发工具。
把 Spring Boot 开发工具添加进入你的项目是简单的。
把下面的依赖项添加至你的 Spring Boot Project pom.xml 中
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
重启应用程序,而后就能够了。
在我测试的时候,发现了 LiveReload 漏洞,若是你测试时也发现了,请必定要告诉咱们。
思考一下在你的虚拟机上部署应用程序须要些什么。
第一步: 安装 Java
第二部: 安装 Web 或者是应用程序的服务器(Tomat/Wbesphere/Weblogic 等等)
第三部: 部署应用程序 war 包
若是咱们想简化这些步骤,应该如何作呢?
让咱们来思考如何使服务器成为应用程序的一部分?
你只须要一个安装了 Java 的虚拟机,就能够直接在上面部署应用程序了,
是否是很爽?
这个想法是嵌入式服务器的起源。
当咱们建立一个能够部署的应用程序的时候,咱们将会把服务器(例如,tomcat)嵌入到可部署的服务器中。
例如,对于一个 Spring Boot 应用程序来讲,你能够生成一个包含 Embedded Tomcat 的应用程序 jar。你就能够想运行正常 Java 应用程序同样来运行 web 应用程序了。
嵌入式服务器就是咱们的可执行单元包含服务器的二进制文件(例如,tomcat.jar)。
在源文件夹下,建立一个名为 static 的文件夹。而后,你能够把你的静态的内容放在这里面。
例如,myapp.js 的路径是 resourcesstaticjsmyapp.js
你能够参考它在 jsp 中的使用方法
<csript src="/js/myapp.js"></script>
错误:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.
该如何来修复这个错误呢?
{ "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 Data 的使命是在保证底层数据存储特殊性的前提下,为数据访问提供一个熟悉的,一致性的,基于 Spring 的编程模型。这使得使用数据访问技术,关系数据库和非关系数据库,map-reduce 框架以及基于云的数据服务变得很容易。
为了让它更简单一些,Spring Data 提供了不受底层数据源限制的 Abstractions 接口。
下面来举一个例子
interface TodoRepository extends CrudRepository<Todo, Long> {
你能够定义一简单的库,用来插入,更新,删除和检索代办事项,而不须要编写大量的代码。
Spring Data TEST 能够用来发布关于 Spring 数据库的 HATEOAS RESTful 资源。
下面是一个使用 JPA 的例子
@RepositoryRestResource(collectionResourceRel = "todos", path = "todos") public interface TodoRepository extends PagingAndSortingRepository<Todo, Long> {
不须要写太多代码,咱们能够发布关于 Spring 数据库的 RESTful API。
下面展现的是一些关于 TEST 服务器的例子
POST
代码以下
{ "user": "Jill", "desc": "Learn Hibernate", "done": false }
响应内容
{ "user": "Jill", "desc": "Learn Hibernate", "done": false, "_links": { "self": { "href": "http://localhost:8080/todos/1" }, "todo": { "href": "http://localhost:8080/todos/1" } } }
响应包含新建立资源的 href。
@RepositoryRestResource(collectionResourceRel = "users", path = "users") public interface UserRestRepository extends PagingAndSortingRepository<User, Long>
若是你使用 Eclipse IDE,Eclipse maven 插件确保依赖项或者类文件的改变一经添加,就会被编译并在目标文件中准备好!在这以后,就和其它的 Java 应用程序同样了。
当你启动 java 应用程序的时候,spring boot 自动配置文件就会魔法般的启用了。
在 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>
你须要作下面两个步骤:
第二步:取决于你的服务器。
咱们认为 Spring Data Rest 很适合快速原型制造!在大型应用程序中使用须要谨慎。
经过 Spring Data REST 你能够把你的数据实体做为 RESTful 服务直接发布。
当你设计 RESTful 服务器的时候,最佳实践代表,你的接口应该考虑到两件重要的事情:
经过 With Spring Data REST,你不须要再考虑这两个方面,只须要做为 TEST 服务发布实体。
这就是为何咱们建议使用 Spring Data Rest 在快速原型构造上面,或者做为项目的初始解决方法。对于完整演变项目来讲,这并非一个好的注意。
二十一. 在 Spring Initializer 中,如何改变一个项目的包名字?
二十二. JPA 和 Hibernate 有哪些区别?
二十三. 业务边界应该从哪一层开始?
二十四. 使用 Spring Boot 启动链接到内存数据库 H2 的 JPA 应用程序须要哪些依赖项?
二十五.如何不经过任何配置来选择 Hibernate 做为 JPA 的默认实现?
二十六.指定的数据库链接信息在哪里?它是如何知道自动链接至 H2 的?
二十七.咱们如何链接一个像 MSSQL 或者 orcale 同样的外部数据库?
二十八.Spring Boot 配置的默认 H2 数据库的名字是上面?为何默认的数据库名字是 testdb?
二十九. 若是 H2 不在类路径里面,会出现上面状况?
三十.你可否举一个以 ReadOnly 为事务管理的例子?
三十一.发布 Spring Boot 用户应用程序自定义配置的最好方法是什么?
三十二. 配置文件的需求是什么?
三十三. 如何使用配置文件经过 Spring Boot 配置特定环境的配置?
因为篇幅过长的缘由,为了避免影响你们的阅读效果,文中没有给到全部的答案。我这里以文件的形式整理好了,须要借阅的程序员朋友能够免费来领取。
面试文件获取方式:
转发+关注我,点击进入【Java高级互联网架构:964357187】免费领取面试资料
收集了还有你不知道的其它面试题(springboot、mybatis、并发、java中高级面试总结等)