1.IDEA 是什么? (集成开发工具-IDE)
2.IDEA 做了哪些配置?
0)JDK的配置(JDK1.8)
1)自动编译配置(代码发生变化以后要重新build)
2)Maven的配置(服务,设置,本地库)--->每次创建新的项目都要重新配置(创建module不需要配置)
3)项目编码(UTF8)
SpringBoot项目创建及入门分析
1)SpringBoot最核心作用是什么?简化Spring工程的创建,配置,运行,维护.
a)起步依赖?(项目创建以后会自动添加一些项目环境的基础依赖)
b)基础配置?(Spring项目中需要的基础配置,例如bean的扫描,基础bean的作用域配置,...)
c)健康监控?(对项目启动,运行过程会有一个监控):暂时还没有讲到
d)内置WEB服务?(例如tomcat,....,可以使用嵌入式服务器运行你的项目):暂时还没有讲到
2)SpringBoot项)创建以后(maven构建方式)要做什么?
a)了解其项目结构
b)添加maven区(新的idea中需要实现的,没有在maven区项目不会帮你自动下载依赖)
c)掌握业务代码编写在什么位置?
d)掌握测试代码编写在什么位置?(springboot中的单元测试不使用org.junit包中的test)
e)了解springboot的配置文件?(application.properties)
f)熟悉maven工程构建文件?(pom.xml-假如这个文件中有些依赖呈现的是红色,可能没下载下来)
SpringBoot初始项目运行时可能出现的问题?
a)NoSuchBeanDefinitionException?(检查类所在的包,类上的注解)
b)NullPointerException?(检查调用方法或属性的对象的值)
c)No Test Found Exception?(检查单元测试方法写的是否正确,例如是否使用了public修饰,返回值类型是否为void)
d)ParameterResolutionException?(单元测试方法不能写参数)
e)ClassNotFoundException?(首先看一下是哪个类没有找到,假如是第三方的应该是依赖没有取下来)
f) unable to find @SpringBootConfiguration?(检查是否有启动类,单元测试类所在包)
g)found multiple @SpringBootConfiguration?(检查项目中是否有多个启动类)
1.SpringBoot工程中Bean对象相关特性分析?
1)我们定义的Bean应该放在什么包中会在项目启动时被加载?(必须在启动类所在包或子包中)
2)如何判定我们写的类,在项目启动时被加载了?(借助JVM参数进行分析:-XX:+TraceClassLoading)
3)spring工程中类被读到内存时是否会直接创建其对象?(不确定,要看其配置)
4)对象被创建的一个标识是什么?(构造方法执行了)
5)假如不希望对象在项目启动时创建,该如何配置?(通过@Lazy注解描述对应的类)
6)SpringBoot工程什么样对象适合延迟加载配置?(大对象,稀少用,也就是启动后可能马上用不到)
7)SpringBoot工程中的延迟加载如何理解?(对象不用时,不创建其时,节省内存)
8)SpringBoot工程假如希望对类的实例进行重用,我们该如何配置?(设置Singleton作用域)
6)SpringBoot工程中Bean的作用域为Singleton时,此类的实例有什么特点?
6.1)可以设置延迟加载特性
6.2)此Bean的实例可以存储到Bean池,让此对象可以重用.
6.3)单例对象在使用时要注意其线程安全?(单例对象共享时)
7)假如对象每次从spring容器获取都需要创建信息的实例,这个类型如何配置?(设置Prototype作用域)
8)Springboot工程中什么样的对象适合设置为prototype作用域?(对象不需要重用,对象不是线程安全的)
9)SpringBoot工程中可以为Bean对象设置生命周期方法,但并不是每个对象都要设置.(什么样的对象一般会设置?)
10)为什么一些Spring Bean池中的一些对象要设置生命周期方法?(辅助对象进行初始化和销毁)
2.SpringBoot工程中Bean对象的依赖查找(DL)和依赖注入(DI)?
1)实际项目中我们会将所有的业务都写到一个对象中吗?(不会-每个对象都应该有一个自己的职责)
2)实际项目中对象会通过协同方式完成一个业务?(正确->这种协同就需要对象之间存在依赖)
3)当对象之间存在依赖时(这种现象又称之为耦合),应该降低这种依赖?(耦合于抽象,耦合工厂)
4)当对象中存在耦合关系时,如何进行值的注入?(最好由对象管理方完成对象注入,例如spring)
5)Spring中为对象类型属性赋值推荐使用什么方式?(自动依赖注入-底层技术需要用到反射)
6)Spring中为对象类型属性赋值时常用的注入策略是什么?(直接为属性赋值,构造方法赋值,set方法赋值)
7)当使用@Autowired注解描述属性时,Spring底层为属性进行DI操作的过程是怎样的?
为什么要将对象交给Spring管理?
我们程序中对象的运行有一个目标?第一:要解决业务问题,第二,要高效低耗的优化业务的执行.
那如何才能达成这样的目标?第一:充分分析业务,确定其对象,第二,要思考解决业务的这些对象
的运行性能.在Spring框架中不会帮我们解决业务问题,但可以从对象运行时的性能方面给予一定
的设计,例如Spring为我们的对象赋予了很多个更加科学的特性,例如延迟加载,作用域,生命周期方法以及运行
时的自动依赖注入(降低耦合,提高程序的可维护性).
2)Spring框架中通过什么方式创建Bean对象?借助反射
a)获取类的字节码对象(Class类型-->类加载到内存时就可以获取)
b)获取类中的构造方法对象(Constructor类型)
c)基于(Constructor类型的对象创建对应类的实例(底层调用newInstance方法)
1.Spring是一个什么框架?(资源整合框架)
1)这里的资源指的是什么?在内存中运行的所有资源都可以理解对象.
2)这些资源对象有一些是我们自己定义(结合业务自己写的一些类),还有一些是第三资源(通用的一些库或框架)?
2.借助Spring进行资源整合的目的是什么?
1)让资源更加科学的得到使用.(科学->高效低耗)
2)提高程序的可维护性,可扩展性.(降低了对象之间的耦合)
3.使用SpringBoot要解决什么问题?
简化Spring框架资源整合的过程,为Spring框架的资源整合提供基础依赖,基础配置,基础监控等,
实现了软件开发过程中的开箱即用特性.
1.如何理解数据库连接池?
1)何为连接池?(内存中一块存储"可重用连接对象"的空间)
2)为什么使用连接池?(提高其性能-反复创建和销毁连接会带来很大的性能损耗)
3)为什么说创建连接和销毁连接会有很大性能损耗?(底层建立连接使用的是TCP/IP协议,
基于此协议创建连接需要三次握手,释放连接需要四次挥手)
在C/S架构,如何提高服务端响应数据的速度(降低响应时间)?
1)请求数据的传输时间?(数据量-压缩,带宽)
2)请求数据的处理时间?(架构,算法,CPU,磁盘,内存)
3)响应数据的传输时间?(数据量-压缩,带宽,缓存)
4)响应数据的渲染时间? (html,css,js,images)
.假如让你设计一个连接池你会考虑哪些问题?
1)池的存储结构?(数组,链表)
2)从池中借,还连接的算法?
3)池操作的线程安全?(如何在保证线程安全的情况还要有很好的性能。)
Java中连接池的规范是什么?为什么要有规范?
1)规范的定义:javax.sql.DataSource
2)使用规范可以让代码更严谨,其可维护性也会更好。
Java编程领域中所有连接池提供方,必须实现DataSource接口,后续我们编程时,可以通过
此接口获取具体连接池对象。
Java中具体是哪个对象负责建立与数据库的链接?Driver
5.SpringBoot工程中想使用HikariCP连接池应该如何实现?
第一步:添加依赖(mysql,spring-data-jdbc)
第二步:配置链接数据库的url,username,password,........
第三步:在程序中耦合DataSource接口获取具体数据源对象,。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。