资源信息都来自网络,本人只是记录作为个人笔记
一 spring概述
1 spring的简史
第一阶段:xml配置;第二阶段:注解配置(2.x时代,jdk5);第三阶段:java配置(3.x开始)
2 spring概述
spring框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于spring解决java ee开发的所有问题。spring框架主要提供了Ioc容器,AOP,数据访问,Web开发,消息,测试等相关技术支持。
2.1 spring模块:
(1) 核心容器(Core Container)
Spring-Core:核心工具类,Spring其他模块大量使用Spring-Core
Spring-Beans:Spring定义Bean的支持
Spring-Context:运行时Spring容器
Spring-Context-Support:Spring容器对第三方包的集成支持
Spring-Expression:使用表达式语言在运行时查询和操作对象。
(2) AOP
Spring-AOP:基于代理的AOP支持
Spring-Aspects:基于AspectJ的AOP支持
(3)消息(Messaging)
Spring-Messaging:对消息架构和协议的支持
(4)Web
Spring-Web:提供基础的Web集成的功能,在Web项目中提供Spring的容器
Spring-Webmvc:提供基于Servlet的SpringMVC;
Spring-WebSocket:提供WebScoket功能
Spring-Webmvc-Porlet:提供Portlet环境支持
(5)数据访问/集成(Data Access/Integration)
Spring-JDBC:提供以JDBC访问数据库的支持
Spring-TX:提供编程式和声明式的事务支持
Spring-ORM:提供对象/关系映射技术的支持
Spring-OXM:提供对象/xml映射技术的支持
Spring-JMS:提供对JMS的支持
2.2 Spring的生态
Spring Boot:使用默认开发配置来实现快速开发。
Spring XD:用来简化大数据应用开发。
Spring Cloud:为分布式系统开发提供工具集。
Spring Data:对主流的关系型和NoSQL数据库的支持。
Spring Integration:通过消息机制对企业集成模式(EIP)的支持。
Spring Batch:简化及优化大量数据的批处理操作。
Spring Security:通过认证和授权保护应用。
Spring HATEOAS:基于HATEOAS原则简化REST服务开发。
Spring Social:与社交网络API(如Facebook,新浪微博等)的集成
Spring AMQP:对基于AMQP的消息的支持。
Spring Mobile:提供对手机设备检测的功能,给不同的设备返回不同的页面支持。
Spring for Android:主要提供在Addroid上消费RESTful API的功能
Spring Web Flow:基于Spring MVC提供基于向导流程式的web应用开发。
Spring Web Services:提供基于协议有限的SOAP/WEB服务
Spring LDAP:简化使用LDAP开发。
Spring Session:提供一个API及实现来管理用户会话信息。
二 Spring项目快速搭建
目前主流的构建工具有:Ant,Maven,Gradle
1. maven简介
Apache Maven 是一个软件项目管理工具。基于项目对象模型(Project Object Model,POM)的概念,Maven可用来管理项目的依赖,编译,文档等信息。使用maven管理项目时,项目依赖的jar包将不在包含在项目内,而是集中放置在用户目录下的.m2文件夹下。
2.maven安装
maven下载地址:https://maven.apache.org/download.cgi
配置环境变量(类似jvm变量,有时候不生效,就将绝对路径直接追加到path变量处),测试安装“mvn -v”
3.maven的pom.xml
3.1 dependencys元素
包含多个项目依赖需要使用的dependency标签元素
3.2 dependency元素
坐标: groupId:组织的唯一标识。artifacId:项目的唯一标识。version:项目的版本。
3.3 变量定义
properties可定义变量,在dependency中引用。eg:版本号统一管理
3.4 编译插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>mavne-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
3.5 maven运作方式
maven会自动根据dependency中的依赖配置,直接通过互联网在maven中心库下载相关依赖包到.m2目录下,.m2目录下式你本地maven库
可以到https://mvnrepository.com/ 网站检索jar包依赖的坐标
若中心库没有需要的,则手动添加,如:安装oracle驱动到本地库:
mvn install:install-file -DgroupId=com.oracle "-DartifactId=ojdbc14" "-Dversion=10.2.0.2.0" "-Dpackaging=jar" "-Dfile=D:\ojdbc14.jar"
4. spring项目的搭建
基于IDEA,
- 新建maven项目:单击file--new--project--maven
- 输入maven项目坐标值
- 选择存储路径
三 spring基础配置
spring框架本身四大原则:
- 使用POJO进行轻量级和最小侵入式开发。
- 通过依赖注入和基于接口编程实现松耦合。
- 通过AOP和默认习惯进行声明式编程。
- 使用AOP和模板(template)减少模式化代码。
1.依赖注入
spring提供使用xml,注解,java配置,groovy配置实现bean的创建和注入,都被称为配置元数据,即描述数据的数据。
声明bean的注解:
- @Component 组件,没有明确的角色
- @Service 在业务逻辑层(service层)使用
- @Repository 在数据访问层(dao层)使用
- @Controller 在展现层(MVC--Spring MVC)使用
注入bean的注解:
- @Autowired: spring提供的注解
- @Inject:JSR-330提供的注解
- @Resource: JSR-250提供的注解
2.java配置
java配置式spring4.x推荐的配置方式,通过@Configuration和@Bean来实现。
@Configuration:声明当前类式一个配置类,相当于一个spring配置的xml文件。
@Bean:注解在方法上,声明当前方法的返回值为一个Bean。
3.AOP
aop:面向切面编程,相当于OOP面向对象编程。
spring支持AspectJ注解式切面编程:
- 使用@Aspect声明是一个切面。
- 使用@Before,@After,@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
- 其中@After,@Before,@Around参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After,@Before,@Around的参数中调用。
- 其中符合条件的每一个被拦截处为连接点(JoinPoint)