1. IDEA 中 project 和 module 的区别
在 IDEA 中 project 是最顶级的结构单元,然后就是 module,一个 project 可以有多个 module。也就是说,一个 project 是由一个或多个 module 组成。
此外, IntelliJ IDEA 的Project是一个不具备任何编码设置、构建等开发功能的概念,其主要作用就是起到一个项目定义、范围约束、规范类型的效果,或许,我们也可以简单地理解Project就是一个单纯的目录,只是这个目录在命名上必须有其代表性的意义。在缺省情况下,IntelliJ IDEA 是默认单Project单Module的,这时Project和Module合二为一,在没有修改存储路径的时候,显然Project对Module具有强约束作用!不过说实话,这里就是将Module的内容放在了Project的目录下,实际上还是Module自己约束自己。
2. 项目结构
project 项目:一个完整的项目中包含了一个或多个模块。其实就是文件夹
module 模块:
package 包:
class 类:
3. Webapp 项目
Plugin 插件在 <build> => <plugins> => <plugin>
1 | <!-- jetty --> |
4. 本地仓库的包 maven 不识别
在进行 mvn install 的时候加上 -e 和 -X ,显示详细的日志信息。一定要详细的看日志,不要放过每一行。
遇到的问题解决方法是:要先安装项目,即对 maven-project 执行:mvn install
。然后在对项目中的子模块进行 install。
5. 选择相同的版本
- 选中项目文件夹,鼠标右键选择open module Settings,选择合适的 jdk 版本
- File(文件) -> Project Structure(项目结构) ->修改jdk版本 (project 和 module 都要修改)
- Setting -> Build -> Compiler -> Java Compiler 修改 jdk 版本
- 关注项目或者模块中 pom.xml 文件中 java 的版本
注意在使用 spring boot 的时候,spring boot 本身的版本和 jdk 的版本也要对应。
6. 反射和注解
1 | 反射 |
注解:就是 java 代码里的特殊标记,比如:@Override
、@Test
等,作用是:让其他程序根据注解信息来决定怎么执行该程序
需要注意的是注解可以用在类上、构造器上、方法上、成员变量上、参数上等位置
自定义注解
1 | public @interface 注解名称 { |
Spring
spring 框架是一个开源的 JavaEE 的应用程序。主要核心是 IoC(控制反转/依赖注入)和 AOP(面向切面编程)两大技术 和 “Spring JDBC + 事务”。
spring 基于分布式的应用程序,基于轻量级的框架。
spring 模块划分:
- Spring IOC 模块:Bean 对象的实例化
- Spring AOP 模块:动态代理,面向切面编程
- Spring JDBC+事务
- Spring Web 模块
IOC – 容器、bean、依赖注入
业务层实现中,创建了数据层的对象。如果我们想换一个数据层的实现。就需要重新更改业务层的代码逻辑,并且重新编译代码,测试,发布等一系列流程。于是,我们希望有一个方法。在使用对象时,在程序中不要主动使用 new 产生对象,转换为由外部提供对象。那么 IOC 就提供了这样的方法,称为控制反转,将对象的创建控制权由程序转移到外部。这种思想称为控制反转。
spring 提供了一个容器,称为 IoC 容器。那么我们使用对象时,由主动 new 产生对象转换为由 IoC 容器提供对象。IoC 容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在 IoC 容器中统称为 Bean。
在容器中建立 bean 和 bean 之间的依赖关系的整个过程,称为依赖注入。
于是我们使用 IoC 容器管理 bean,在 IoC 容器内将有依赖关系的 bean 进行关系绑定。可以做到充分解耦。最终,使用对象时不仅可以直接从 IoC 容器中获取,并且获取到的 bean 已经绑定了所有的依赖关系。
Bean 默认为单例,其中 scope 控制是否为单例,“prototype” 表示不为单例。
1 | <bean id="bookDao" class="com.xxx.dao.impl.BookDaoImpl" scope="prototype" /> |
bean 中的对象是通过无参的构造方法来创建对象的。也可以通过静态工厂实例化 bean,或者使用实例工厂实例化 bean。
关于 bean 的配置如下:
1 | <bean |
关于依赖注入相关:
1 | <bean id="bookService" class="com.xxx.service.impl.BookServiceImpl"> |
注解
AOP
面向切面编程,在不惊动原始设计的基础上为其进行功能增强。Spring 理念:无侵入式编程。
Spring MVC
属于 Web 层开发技术。是一种基于 Java 实现 MVC 模型的轻量级 Web 框架。
Spring Boot
帮我们管理各种包的版本,也就是坐标。于是乎,我门引入包的时候,就不需要写包(依赖)的版本了。