2020javaweb框架教程之spring概述以及配置
spring
作用:项⽬管理。 管理组件(对象 DAO,Service,Controller)
spring工厂搭建
1.导入依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.6.RELEASE</version> </dependency>
2.配置文件
作用:描述哪些组件需要spring⽣产,管理
文件位置:src–>–>main–>resources目录
文件名随意,如:applicationContext.xml
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 作⽤:声明需要spring ⽣产的组件 --> <!-- UserDAOImpl组件 id="组件标识" class="组件类型" --> <bean id="userDAO" class="dao.impl.UsersDaoImpl"/> </beans>
3.启动工厂
工厂接口:ApplicationContext
实现类:ClassPathXmlApplicationContext
service无序调用dao的实现类,直接创建dao并添加set/get方法,然后在applicationContext.xml配置
<!-- spring生成该对象,对象中有一个属性需要赋值--> <bean id="userService" class="service.impl.UsersServiceImpl"> <!-- 给属性 UsersDao 的变量 赋值,值:id="userDAO" --> <property name="ud" ref="userDAO"/> </bean>
然后再去工厂去生成一个
UsersService us = context.getBean("userService", UsersService.class); us.insert(new Users());
2020javaweb框架教程之maven特性
1.传递性
所谓传递性,是指,在项⽬中导⼊了依赖A,⽽A内部依赖了B,则A会⾃动触发B也被导⼊项⽬
好处:没必要导⼊所有依赖在项⽬中,传递性会⾃动导⼊⼀些依赖。简化依赖导⼊管理
坏处:jar冲突
jar冲突:A依赖B B依赖C和d-1.0 c依赖d-2.0。则此时导⼊A依赖,那么项⽬中会采⽤d-1.0 还是 d-2.0
maven默认的选择原则是:最短路径
d-1.0的路径 A->B->d-1.0
d-2.0的路径 A->B->C->d-2.0 则最终选择的是d-1.0
如果路径相等,则先声明的优先
解决方案:
2020javaweb框架教程之maven的aliyun仓库
在maven安装目录conf目录下打开settings.xml,添加镜像
<mirrors>
<mirror>
<id>aliyun</id>
<!– 中⼼仓库的 mirror(镜像) –>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<!– aliyun仓库地址 以后所有要指向中⼼仓库的请求,都由aliyun仓库接替–>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
2020javaweb框架教程之maven生命周期
依赖生命周期
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope><!-- 生命周期 --> </dependency>
maven生命周期如下
compile:默认值,适⽤于所有阶段(测试,编译,运⾏,打包),会随着项⽬⼀起发布(被打包)
provided:类似compile,期望JDK、容器或使⽤者会提供这个依赖。如servlet.jar,参与测试,编译,不会被打包
runtime:只在运⾏时使⽤,如 jdbc6.jar,适⽤运⾏和测试阶段,会被⼀起发布
test:只在测试时使⽤,⽤于编译和运⾏测试代码,如 junit.jar,不会随项⽬发布
system:类似provided,但Maven不会在Repository中查找它,要在本地磁盘⽬录中查找,参与编译,测试,打包,运⾏。
2020javaweb框架教程之idea配置maven以及配置Tomcat
idea配置maven
选择骨架
创建maven项目,选择骨架
项目结构
java项目:
1.src/main/java 存放源代码,建包,放项⽬中代码(service,dao,User,….)
2.src/main/resources 书写配置⽂件,项⽬中的配置⽂件(jdbc.properties)
3.src/test/java 书写测试代码,项⽬中测试案例代码
4.src/test/resources 书写测试案例相关配置⽂件
5.项⽬根/pom.xml (project object model) maven项⽬核⼼⽂件,其中定义项⽬构建⽅式,声明依赖等
注意:项⽬中的建包,建类,执⾏,都和普通项⽬⽆差异
导入依赖jar
建好项⽬后,需要导⼊需要的jar,要通过【坐标】
1. 每个构件都有⾃⼰的坐标(标识) = groupId + artifactId + version = 项⽬标识 + 项⽬名 + 版本
2. 在maven项⽬中只需要配置坐标,maven便会⾃动加载对应依赖。删除坐标则会移除依赖
3. jar包并不会导⼊到项⽬⽬录中,只是maven帮助做了关联。但在打包部署项⽬时会携带对应依赖
4. ⽽且,如果导⼊了依赖A,⽽A中⼜依赖了B,则B会被⾃动加载。
查找依赖
依赖查找服务:https://mvnrepository.com/ ,获得依赖的坐标,在maven项⽬中导⼊。
导入依赖
在项目的pom文件中:
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency><!-- 通过坐标导入依赖 -->
同步依赖
创建javaweb项目导入依赖
<dependency> <!-- jstl 支持 --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>compile</scope> </dependency> <dependency> <!-- servlet编译环境 --> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <!-- jsp编译环境 --> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>
配置Tomcat