摘要
本文为学习Spring Boot实战的学习笔记,学习了一遍,但是好记性不如烂笔头,所以文章记录下来。图书购买地址为: https://item.jd.com/11894632.html.
1.Spring 基础
1.1 Spring 主要模块
1.1.1 核心容器(Core Container)
Spring-Core:核心工具类,Spring其它模块大量使用Spring-Core
Spring-Beans:Spring定义的Bean的支持
Spring-Context:运行时Spring容器
Spring-Context-Support:Spring容器对第三方包的集成支持
Spring-Expression:使用表达式语言在运行是查询和操作对象
1.1.2 AOP
Spring-AOP:基于代理的AOP支持
Spring-Aspects:基于AspectJ的支持.
1.1.3 消息(Messaging)
Spring-Messageing:对消息架构和协议的支持
1.1.4 Web
Spring-Web:提供基础的Web集成的功能,在Web项目中提供Spring的容器
Spring-Webmvc:提供基于Servlet的Spring MVC
Spring-WebSocket:提供WebSocket功能
Spring-Webmvc-Portlet:提供portlet环境支持.
1.1.5 数据访问/集成(Data Access/Integration)
Spring-JDBC: 提供以 JDBC访间数据库的支持
Spnng-TX: 提供编程式和声明式的事务支持
Spnng-0RM: 提供对对象/关系映射技术的支持
Spring-0XM:提供对对象/xml映射技术的支持
Spring-JMS: 提供对 JMS的支持。
1.2 Spring 主要生态
1.3 Spring基础配置
四大原则:
1) 使用POJO进行轻量级和最小侵入式开发
2) 通过依赖注入和基于接口编程实现松耦合
3) 通过AOP和默认习惯进行声明式编程
4) 使用AOP和模板(Template)减少模块化代码
Spring所有功能的设计和实现都是基于以上四大原则的.
1.3.1 IOC
控制反转: (IOC-Inversion of Control)
依赖注入: (DI-dependency injection)
在Spring 环境下是等同的,控制翻转是通过依赖注入实现的. 依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖.
Spring Ioc容器(ApplicationContext)负责创建 Bean,并通过容器精功能类 Bean注入到你需要的 Bean中。 spring提供使用 xml、注解、 Java配置、 groovy配置实现 Bean的创建和注入。
元数据: 包括 xml配置、注解配置和Java配置. 元数据本身不具备住何可执行的能力, 只能通过外界代码来对这些元数据行解析后通行一些有意义操作。Spring容器解析这些配置元数据进行 Bean初始化、配置和管理依赖。
声明 Bean的注解:
o @Component组件,没有明确的角色。
o @service在业务逻輯层( service层)使用。
o @Repository 在数据访问层( dao层)使用 。
o @controller在展现层( MVC→Sprmg MVC)使用 。
o @Component Spring容器管理的Bean。
注入 Bean的注解, 一般情况下通用
o @Autowired: Spring提供的注解。
o @Inject: JSR-330提供的注解。
o @Resource: JSR-250提供的注解。
o @EnableAspectJAutoProxy: 注解开启Spring对AspectJ的支持.
常用注解举例
o @Configuration:表明当前类是一个配置类,这个意味着这个类里可能有0个或多个@Bean注解.
1.3.2 AOP
AOP:面向切面编程,相对于OOP面向对象编程.
AOP的目的是解耦,AOP让一组类共享相同的行为。
在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足.
Spring 支持AspectJ的注解切面编程.
- o @AspectJ的注解式切面编程
- o @After,@Before,@Around定义建言(Advice),可直接将拦截规则(切点,PointCut)作为参数。
- o @PointCut 拦截规则为切点(PointCut),定义拦截规则。
- JoinPoint: 连接点,符合条件的每一个拦截处.
==AOP==
<!-- spring aop支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!-- aspectj支持 -->
//注意,由于pom标准写法占用个篇幅,改用gradle写法.要要代码时修改即可.或查看本书完整代码.
org.aspectj:aspectjrt:1.8.6
org.aspectj:aspectjweaver:1.8.5
源码下载地址
http://www.broadview.com.cn/book/472
http://www.broadview.com.cn/file/resource/061078061207186156162159222041137008231100137136#
2.Spring 常用配置
2.1 Bean的Scope
Scope描述的是Srping 容器如何新建Bean的实例的.Spring的Scope有:
- 1)Singleton : 一个Spring 容器中只有一个Bean的实例.此为Spring默认配置,全部容器共享一个实例.
- 2)Prototype : 每次调用新建一个Bean的实例.
- 3)Request : 每一个Http的Request新建一个Bean实例.
- 4)Session : 每一个http的Session新建一个Bean实例.
- 5)GlobalSession:每一个global http session新建一个bean(只在portal中有用)
- 6)StepScope : 只在Spring Batch中使用.
写法如下:
@Service
@Scope("prototype")
public class DemoPrototypeService{
}
2.2 EL和资源调用
配置文件:test.properties
book.author=wangyunfei
book.name=spring boot
// 1)普通字符串
@Value("其它类的属性")
private String another;
//2)操作系统属性
@Value("#{systemProperties['os.name']}")
private String osName;
//3)注入表达式结果
@Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber;
//4)注入其它Bean结果
@Value("#{demoService.another}")