Spring01
架构
一站式框架:有EE开发的每一层解决方案。
-
WEB层 :SpringMVC
-
Service层 :Spring的Bean管理,Spring声明式事务
-
DAO层 :Spring的Jdbc模板,Spring的ORM模块

优点
- 解耦、AOP、声明式事务
- 方便测试,对于各种框架的支持、对Java EE API封装,降低了使用难度。
IOC
IOC: Inversion of Control(控制反转),将对象的创建权反转给(交给)Spring。
- DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。
传统方式问题
- 直接new:没有解耦。
- 工厂模式:实现类和调用方解耦,但是又和工厂类有了耦合。
- Spring的方式:工厂模式+ 反射+配置文件。
面向对象编程类之间的关系
- 依赖
- 继承
- 聚合
ApplicationContext
-
ClassPathXmlApplicationContext :加载类路径下的配置文件
-
FileSystemXmlApplicationContext :加载文件系统下的配置文件
Bean的配置
<bean>标签的id和name的配置
id :使用了约束中的唯一约束。里面不能出现特殊字符的。
name :没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。
Bean的生命周期的配置
init-method :Bean被初始化的时候执行的方法
destroy-method :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)。
scope
- singleton :默认
- prototype:
- request:spring创建之后放入request中
- Session:创建之后放入Session中。
- globalsession :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相当于session。
属性注入
p命名空间
通过引入p名称空间完成属性的注入:
-
普通属性 p:属性名=”值”
-
对象属性 p:属性名-ref=”值” (直接写在bean标签里面)
SpEL的属性注入
lSpEL:Spring Expression Language,Spring的表达式语言。
- 语法:
- #{SpEL}
集合的属性注入
<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
<!-- 数组类型 -->
<property name="arrs">
<list>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
</set>
</property>
<!-- 注入Map集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
</map>
</property>
</bean>
Spring核心监听器ContextLoaderListener
应该是contextLoaderListener里面读取contextConfigLocation的值,然后new出工厂,放入servletContext中。