Spring:

单纯的spring框架已经全部过了一遍了,现在整理一下里面涉及到的要点:

  1. IOC控制反转与依赖注入
  2. (基于动态代理原理的)AOP面向切面编程  
    拓展bean
    事务处理
  3. 注解方式开发与XML

一.IOC原理及应用

  传统方式在创建对象时一般采用工厂模式:目的是减少接口类与实现类之间的耦合关系,但是增加了接口与工厂的耦合(修改代码时需要修改工厂类中的接口,不符合闭包原则)。解决方法就是“工厂+反射+配置文件”了。工厂中配置方法,XML中配置类,反射捕捉到需求就创建新类,这就是IOC的主要原理.

1.自定义工厂类

框架中自定义的工厂类 ApplicationContext有两个实现类

  • ClassPathXmlApplicationContext  :加载类路径下的配置文件
  • FileSystemXmlApplicationContext   :加载文件系统下的配置文件

 需要在XML中配置bean。

<bean>标签的id和name的配置
  id     使用了约束中的唯一约束。里面不能出现特殊字符的。

  name   没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。

 class 定义的类的位置 Spring和Struts1框架整合的时候 <bean name=”/user” class=””/> Bean的生命周期的配置(了解) init-method Bean被初始化的时候执行的方法 destroy-method Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)

   Bean的作用范围的配置(重点)

l  scope                            :Bean的作用范围

  singleton          :默认的,Spring会采用单例模式创建这个对象。

  prototype         :多例模式。(Struts2和Spring整合一定会用到)

扫描二维码关注公众号,回复: 6076410 查看本文章

  request              :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。

  session              :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。

  globalsession    :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对于session。

  

创建类的方式:默认创建(无参构造),静态工厂(factory-method),实例工厂(先实例化工厂然后factory-bean+factory-method)

2.属性注入:

  构造方法注入 

  set方式注入

ps:设置对象类型的属性使用ref(加bean的id)

  P空间属性注入

  spel属性注入(可以注入表达式)

3.集合属性注入

<!-- Spring的集合属性的注入============================ -->
	<!-- 注入数组类型 -->
	<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
		<!-- 数组类型 -->
		<property name="arrs">
			<list>
				<value>王东</value>
				<value>赵洪</value>
				<value>李冠希</value>
			</list>
		</property>
		
		<!-- 注入list集合 -->
		<property name="list">
			<list>
				<value>李兵</value>
				<value>赵如何</value>
				<value>邓凤</value>
			</list>
		</property>
		
		<!-- 注入set集合 -->
		<property name="set">
			<set>
				<value>aaa</value>
				<value>bbb</value>
				<value>ccc</value>
			</set>
		</property>
		
		<!-- 注入Map集合 -->
		<property name="map">
			<map>
				<entry key="aaa" value="111"/>
				<entry key="bbb" value="222"/>
				<entry key="ccc" value="333"/>
			</map>
		</property>
           </bean>    

  

      在加载配置文件的时候,加载多个配置文件

      在一个配置文件中引入多个配置文件(在其中一个里配置其他的)

 

4.基于注解的IOC开发:

  1.引入aop的包

  2.引入context约束(可以直接扫父包:com.itheima.spring=扫描父包下面的所有子包)

  <context:component-scan />

  3.使用注解开发

l  @Component(修饰一个类并交给spring管理):定义Bean

  • @Controller    :WEB
  • @Service        :Service
  • @Repository  :DAO层           (效果一致)

属性注入:(类中有set方法,注解加到方法上;没有set方法,注解添加到属性上)

  • 普通属性        :@Value
  • 对象属性        :@Resource

  @Autowired   :按类型注入属性,

   @Autowired+@Qulifier或者@resourse:按名称

作用范围@Scope:

  • * singleton: 单例
  • * prototype: 多例

生命周期

XML方式和注解方式比较

  XML方式        :适用性更广,结构更加清晰。

  注解方式        :适用类是自己定义,开发更方便。

  XML和注解的整合开发:XML定义类

             注解属性注入

二. AOP原理与应用

猜你喜欢

转载自www.cnblogs.com/lvoooop/p/10738667.html