Spring根本使命:简化Java开发
2020-03-25 09:40:40 0 举报
AI智能生成
Spring基础知识笔记
作者其他创作
大纲/内容
Spring根本使命:简化Java开发
关键策略
基于POJO的轻量级和最小侵入性编程
通过依赖注入和面向接口实现松耦合
基于切面和惯例进行声明式编程
通过切面和模版减少样板式代码
依赖注入DI
注入形式
构造器注入 通过构造器参数传入-适用于强依赖关系
属性注入-适用于可选性依赖关系
装配方式
隐式bean发现和自动装配-优先
组件扫描
@Component-表明该类为组件类 告知Spring为其创建bean
@Component(\"BeanName\") @Named(\"BeanName\")设置beanID,推荐使用前者
启动组件扫描
配置类注解方式:@ComponentScan-标记于配置类处,扫描与配置类相同的包
@ComponentScan(\"PackageName\") 指定扫描包名称
@ComponentScan(basePackages=\"Package1\
@ComponentScan(basePackages=\"A.class\
XML方式:<context:component-scan>
自动装配
@Autowired = @Inject 要求Spring尝试满足被注解方法参数上所声明的依赖
@Autowired(required=false) 没有匹配bean,保持未装配状态,不抛异常
Java配置类-次优先
@Configuration-表明一个配置类
@Bean-在配置类中声明bean
@Bean(name=\"XXX\")-显式设置bean名称
XML-最后选择
<bean name=\"AAA\" class=\"全限定类名\"> -声明一个bean
构造器注入
bean注入构造器
<constructor-arg ref=\"XXX\"> - 告知Spring将一个ID为XXX的bean引用传递到AAA的构造器中
c-命名空间:c:arg_name-ref=\"AAA\" 为构造器参数arg_name注入ID为XXX的bean
字面量注入构造器
<constructor-arg value=\"CCC\"> -给定的值CCC以字面量形式注入构造器
c-命名空间 c:_valuename=\"CCC\" 或者 c:_0=\"CCC\"
装配集合注入构造器
<list>
<value>AAA</value> - 插入List值列表
<ref bean=\"AAA\" /> - 插入bean列表
<set> 装配方式与<list>相同
c-命名空间无法装配集合
属性注入
bean注入属性
<property name=\"AAA\" ref=\"CCC\"> 为属性的Setter方法(setAAA)提供bean注入
p-命名空间 p:AAA-ref=\"CCC\" 功能同上
字面量注入属性
<property name=\"AAA\" value=\"CCC\"> -给定的值CCC以字面量形式注入属性方法setAAA
c-命名空间 p:_AAA=\"CCC\" -给定的值CCC以字面量形式注入属性方法setAAA
装配集合注入属性<property name=\"AAA\">
<value>CCC</value> - 插入List值列表
<ref bean=\"DDD\" /> - 插入bean列表
p-命名空间无法装配集合
util-命名空间简化集合注入
<util:constant> 引用某个类型的public static域,并将其暴露为bean
<util:list> 创建一个java.util.List类型的bean,其中包含值或引用
<util:map> 创建一个java.util.Map类型的bean,其中包含值或引用
<util:properties> 创建一个java.util.Properties类型的bean
<util:property-path> 引用一个bean的属性(或内嵌属性),并将其暴露为bean
<util:set> 创建一个java.util.Set类型的bean,其中包含值或引用
面向切面编程AOP
<aop:config> 切面配置
<aop:aspect ref=\"XXX\">声明切面所使用的bin
<aop:pointcut> 定义切点,包括切点id和触发标志函数
<aop:before> 声明前置通知 触发标志发生前行为
<aop:after> 声明后置通知 触发标志发生后行为
AspectJ切点表达式
使用模版消除样板式代码
Spring容器
bean工厂
应用上下文
AnnotationConfigApplicationContext:从一个或多个Java配置类中加载Spring应用上下文
AnnotationConfigWebApplicationContext:从一个或多个Java配置类中加载Spring Web应用上下文
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义
FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义
XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义
bean的声明周期
Spring框架
数据访问与集成
JDBC
Transaction
ORM
常用ORM框架
Hibernate
Java Persisternce API
Java Data Object
iBATIS SQL Maps
OXM
Messaging
JMS(Java Message Service)
Web与远程调用
Web
Web servlet
Web portlet
WebSocket
面向切面编程
AOP
Aspects
Instrumentation
Instrument
Instrument Tomcat
Spring核心容器
Beans
Core
Context
Expression
Context support
测试
Test
Spring Portfolio
Spring Web Flow
为基于流程的会话式Web应用提供支持
Spring Web Service
提供契约优先的Web Service模型
Spring Security
为Spring应用提供声明式的安全机制
Spring Integration
提供多种通用应用集成模式的Spring声明式风格实现
Spring Batch
批处理
Spring Data
对接多种类型数据库
Spring Social
社交网络扩展模块
Spring Mobile
Spring MVC扩展模块,用于支持移动Web应用开发
Spring for Android
Spring Boot
简化Spring本身的配置
0 条评论
回复 删除
下一页