Spring学习笔记一:Spring框架搭建、配置详解,IOC控制反转、依赖注入详解

文章目录

      • 1. Spring学习笔记一:Spring框架搭建、配置详解
        • 1.1. Spring框架介绍
        • 1.2. spring框架的搭建
          • 1.2.1. 导包
          • 1.2.2. 创建对象
          • 1.2.3. 配置注册对象到容器
          • 1.2.4. 配置applicationContext.xml
        • 1.3. IOC控制反转和DI依赖注入
        • 1.4. applicationContext.xml配置详解
        • 1.5. bean属性scope
        • 1.6. bean属性生命周期属性
        • 1.7. spring的分模块配置
        • 1.8. spring属性注入
        • 1.9. 复杂类型注入

1. Spring学习笔记一:Spring框架搭建、配置详解

1.1. Spring框架介绍

  1. 三种框架中spring的位置,框架中分三层,web层、service层、dao层,Struts2位于web层,Hibernate位于dao层,那么Spring框架应该在那个层呢?其实Spring框架贯穿三个层次,Spring负责管理项目中的所有对象,spring看做是项目中对象的管家。

Spring学习笔记一:Spring框架搭建、配置详解,IOC控制反转、依赖注入详解_第1张图片

  1. spring是一站式框架:正是因为spring框架属于容器性质决定的,容器中装什么对象就有什么功能,不仅不排斥其他框架,还能帮其他框架管理对象。aop支持,IOC思想,支持junit等。

1.2. spring框架的搭建

1.2.1. 导包

四个核心包:bean,core,context,expression

以及一个日志包:commons.logging,

老版本需要导入:log4j

1.2.2. 创建对象
1.2.3. 配置注册对象到容器
  1. 创建Spring配置文件,位置任意,建议放在src下,名字任意,建议applicationContext.xml

  2. eclipse导入约束

  • window–>preference(偏好)–>XML catalog–>Add–>G:\TheJarPackage\spring-framework-4.2.4.RELEASE\schema\beans(这个是里面的最新版本约束)

Spring学习笔记一:Spring框架搭建、配置详解,IOC控制反转、依赖注入详解_第2张图片

  • key type选择Schema location
  • key键最后要加上/spring-beans-4.2.xsd
  • Schema约束算是导入完成。
1.2.4. 配置applicationContext.xml
  1. 添加 进入design,
  2. 选中右键,选择Edit NameSpace,
  3. 添加xsi
  4. 再Add,勾选Specify New Namespace
  5. 选择第三个,点击browse,选择Select XML Catalog entry,并从中找到spring-bean-4.2.xsd
  6. 然后配置Namespace Name选项,即Spring-bean-4.2.xsd的前缀

Spring学习笔记一:Spring框架搭建、配置详解,IOC控制反转、依赖注入详解_第3张图片

  1. 如果在applicationContext.xml中添加<出现提示表示配置成功。

1.3. IOC控制反转和DI依赖注入

  1. IOC即:inverse of control 就是将我们创建对象的方式反转了,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入,引入spring以后,这些东西都交给了spring来创建注入。
  2. DI即:Dependency Injection依赖注入。实现IOC思想需要DI的支持。spring创建这个类的过程中,spring将类的依赖的属性设置进去。

1.4. applicationContext.xml配置详解

  1. 每次启动时就会创建容器中配置的所有对象,并提供更多的功能。
  2. 丛类路径下加载配置文件:ClassPathXmlApplicationContext
  3. bean元素配置


<bean  name="user" class="cn.zhang.bean.User" >bean>

<import resource="cn/zhang/b_create/applicationContext.xml"/>
  1. spring创建对象方式
  • 空参构造方式
bean>
  • 静态工厂方式创建(了解)
<bean  name="user2" 
		class="cn.it.b_create.UserFactory" 
		factory-method="createUser" >bean>
public static User createUser(){
    System.out.println("静态工厂创建User");
    return new User();
}
  • 实例工厂创建(了解)


      factory-method="createUser2" >bean>
<bean  name="userFactory" 
      class="cn.it.b_create.UserFactory"   >bean>

1.5. bean属性scope

  1. scope属性有:singleton单例,prototype多例,request,session最后两个不常见。
  • singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
  • prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.对于Struts2中的Action每次请求都会创建一个Action。
  • request:web环境下.对象与request生命周期一致.
  • session:web环境下,对象与session生命周期一致.

1.6. bean属性生命周期属性

  1. 在bean中配置init-method=“初始化方法”,destory-method=“销毁方法”。
  2. 初始化方法,销毁方法都是放在对象中的,spring会在创建对象后立即调用初始化方法,spring会在关闭或销毁所有容器中的对象之前调用销毁方法。
  3. bean即一个容器。

1.7. spring的分模块配置

  1. 就是在spring的一个配置中导入其他配置文件

<import resource="cn/zhang/b_create/applicationContext.xml"/>

1.8. spring属性注入

  1. set方法注入

<bean  name="user" class="cn.it.bean.User" >
    
    <property name="name" value="tom" >property>
    <property name="age"  value="18" >property>
    
    <property name="car"  ref="car" >property>
bean>


<bean name="car" class="cn.it.bean.Car" >
    <property name="name" value="兰博基尼" >property>
    <property name="color" value="黄色" >property>
bean>
  1. 构造函数注入


    
    
    
    
    

  • name,index,type三者能确定任何一个构造函数。
  1. p名称空间注入(不常用)

	<bean  name="user3" class="cn.it.bean.User" p:name="jack" p:age="20" p:car-ref="car"  >
	bean>
  1. spel注入(不常用)

<bean  name="user4" class="cn.it.bean.User" >
		<property name="name" value="#{user.name}" >property>
		<property name="age" value="#{user3.age}" >property>
		<property name="car" ref="car" >property>
bean>

1.9. 复杂类型注入

  1. 数组类型注入


<property name="arr">
    <array>
        <value>tomvalue>
        <value>jerryvalue>
        <ref bean="user4" />
    array>
property>
  1. list集合类型注入

<property name="list"  >
    <list>
        <value>jackvalue>
        <value>rosevalue>
        <ref bean="user3" />
    list>
property>
  1. Map集合类型注入

<property name="map"  >
    <map>
        <entry key="url" value="jdbc:mysql:///crm" >entry>
        <entry key="user" value-ref="user4"  >entry>
        <entry key-ref="user3" value-ref="user2"  >entry>
    map> 
property>
  1. properties类型注入

<property name="prop"  >
    <props>
        <prop key="driverClass">com.jdbc.mysql.Driverprop>
        <prop key="userName">rootprop>
        <prop key="password">1234prop>
    props>
property>

你可能感兴趣的:(Spring学习笔记)