Spring01

140 阅读2分钟

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中。