作者:shilohqiu_144 | 来源:互联网 | 2023-10-12 19:25
目录 一、Maven的安装和配置 二、Spring框架的概念 三、快速搭建Spring项目
一、Maven的安装和配置 1.下载安装Maven 虽然Intellij IDEA已经包含了Maven插件,但最好还是能够安装自己的Maven插件,方便以后配置使用。可以通过Maven的官网http://maven.apache.org/download.cgi下载最新版的Maven。 Maven下载后解压即可。如解压到D盘,然后将Maven的安装路径D:\apache-maven-3.5.0\bin加入到环境变量path中。然后通过在命令行窗口执行命令:mvn -v,验证是否安装成功。
2.配置Intellij IDEA中的Maven 第1步:打开idea,点击Configure,打开settings。
第2步:搜索框搜索maven,找到maven相关配置。在Maven home directory中选择Maven的安装路径,勾上User settings file和Local repository后面的override,并选择Maven的配置文件和仓库的位置。
第3步:点击Runner,在VM Options中配置 -DarchetypeCatalog=internal
ps:指定-DarchetypeCatalog为internal的目的是为了可使用maven默认的archetype-catalog.xml,而不用再remote下载。Intellij根据maven archetype的本质,执行mvn archetype:generate命令。该命令执行时,需要指定一个archetype-catalog.xml文件。该命令-DarchetypeCatalog可选值为:remote,internal,local等,用来指定archetype-catalog.xml文件从哪里获取,默认为remote。即从http://repo1.maven.org/maven2/archetype-catalog.xml 路径下载文件,这个文件约为3-6M,下载速度很慢,导致网络延时,所以加载jar慢。
解决导入jar包慢问题的方法可参考IntelliJ IDEA创建Maven项目导入jar包速度慢的三种解决方法
二、Spring框架的概念 spring 是众多开源 java 项目中的一员,基于分层的 javaEE 应用一站式轻量 级开源框架,主要核心是 Ioc(控制反转/依赖注入) 与 Aop(面向切面)两大技 术,实现项目在开发过程中的轻松解耦,提高项目的开发效率。
spring的优势:
降低组件之间的耦合度,实现软件各层之间的解耦。 可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。 当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。 容器提供单例模式支持,开发人员不再需要自己编写实现代码。 容器提供了 AOP 技术,利用它很容易实现如权限拦截、运行期监控等功能。 方便程序的测试。可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情。 方便集成各种优秀框架(Structs、Hibernate、Hessian、Quartz等)的支持。 降低JavaEE API的使用难度。Spring对JavaEE API(如JDBC、JavaMail、远程调用等)进行了薄薄的封装,是这些API的使用难度降低。 spring源码架构及体系结构: Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container) 、 Aop(Aspect OrientedProgramming) 和设备支持(Instrmentation) 、 数据访问及集成(DataAccess/Integeration) 、Web、 报文发送(Messaging) 、 测试 6 个模块集合中。 1.数据库访问/集成(DataAccess/Integration)
JDBC模块:提供了一个JDBC 的样例模板,使用这些模板能抵消传统冗长的JDBC编码和必须的事务控制,而且还能享受到Spring管理事务的好处。 ORM模块:提供与流行的“对象/关系”映射框架的无缝集成,包括Hibernate、JPA、Ibatis等,而且可以使用Spring事务管理,无需额外控制事务。 OXM模块:提供了一个Object/XML映射实现,将Java对象映射成XML数据,或者将XML数据映射成Java对象,Object/MXL映射实现包括JAXB、Castor、XMLBeans和XStream等。 JMS模块:提供一套“消息生产者、消息消费者”模块,使之更加简单地使用JMS,JMS用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 Transactions模块:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务的控制了,而且支持编程和声明性的事务管理。 2.Web层
WebSocket模块:提供WebSocket功能。 Servlet模块:提供了一个Spring MVC Web框架实现。Spring MVC框架提供了基于注解的请求资源注入,更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其它技术协作。 Web模块:提供了基础的Web功能。例如:多文件上传、并提供一个RestTemplate类来进行方便的Restful Services访问。 Portlet模块:提供Portlet环境支持。 3.AOP、Aspects
AOP:提供了符合AOP Alliance规范的面向切面的编程(aspect-oriented programming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态地把这些功能添加到需要的代码中,这样各司其职,降低业务逻辑和通用功能的耦合。 Aspects:提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。 4.Core Container(核心容器)
Spring-Beans:提供了框架的基础部分,包括控制反转和依赖注入。其中Bean Factory是容器的核心,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式”,单例完全由容器控制,而且提倡面向接口的编程,而非面向实现编程。所有应用程序对象及对象间关系由框架管理,从而真正从程序逻辑中,把维护对象之间的依赖关系提取出来,所有这些依赖关系都由Bean Factory来维护。 Spring-Core:以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、Java EE支持、容器声明周期、事件传播等。核心接口是ApplicationContext。 Spring-SpEL:提供强大的表达式语言支持,支持访问和修改属性、方法调用;支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring容器获取Bean,还支持列表投影、选择和一般的列表聚合等。 5.Test
Test模块:Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟HTTP请求的功能。 三、快速搭建Spring项目 1.新建工程项目,在新建窗口选择Maven,勾选Create from archetype,选择maven-archetype-webapp。
2.填写GroupID和ArtifactID。 GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。 比如我创建一个项目,我一般会将GroupId设置为com.szly,com表示域名,szly一般代表公司的名称,ArtifactId设置为spring-ioc,表示你这个项目的名称是spring-ioc,依照这个设置,在你创建Maven工程后,新建包的时候,包结构最好是com.szly.spring-ioc打头的。
3.如果我们配置了一中的第2步,那么会发现在Maven home directory、User settings file和Local repository已经配置好了;如果没有配置的话,再手动进行配置一下。另外,如果配置了一中的第3步,就不需要配置Add Maven Property中的name和value了;同样,如果没有配置的话,就在Properties属性列表中添加属性名name:archetypeCatalog,value:internal。
4.填写项目名称,finish。
5.在/src/main目录下创建java和resources目录,分别标记为Sources和Resources文件。至此,一个完整的web项目创建完成。
快速使用: 1.在porm.xml中导入坐标
2.创建Bean 包结构如下
package com. szly. dao; public interface UserDao { public void save ( ) ; }
package com. szly. dao. impl; import com. szly. dao. UserDao; public class UserDaoImpl implements UserDao { @Override public void save ( ) { System. out. println ( "save running..." ) ; } }
3.在resources文件夹下创建配置文件applicationContext.xml,配置bean
< 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" > < bean id = " userDao" class = " com.szly.dao.impl.UserDaoImpl" > bean> beans>
4.创建ApplicationContext对象
package com. szly. demo; import com. szly. dao. UserDao; import org. springframework. context. ApplicationContext; import org. springframework. context. support. ClassPathXmlApplicationContext; public class UserDaoDemo { public static void main ( String[ ] args) { ApplicationContext app = new ClassPathXmlApplicationContext ( "applicationContext.xml" ) ; UserDao userDao = ( UserDao) app. getBean ( "userDao" ) ; userDao. save ( ) ; } }
程序输出