【spring4】学习笔记(一)

spring一些入门基本配置内容

一、web项目中spring的jar包导入

初学spring只导入核心库中导入四个基本的库


二、一般在src中新建一个applicationContext.xml这个spring容器     【即   依赖注入  DI】

一般在src目录下

三、配置applicationContext.xml这个spring容器的约束 

(有点复杂可以先空着)通过这个配置文件获得spring容器

四、applicationContext.xml中的Bean元素及元素中的属性用法作用:

    class属性:被管理对象的完整(含路径)类名

    name属性:获得对象时根据该名称获得

    id属性:等价于name属性(很少使用一般使用name)

    scope属性(作用范围属性): 

                       singleton 默认值,单例的  (绝大多数使用默认值)

                       prototype 多例的    (在struts2中必须声明成prototype)

                    (下面两个没什么用的)

                      request web项目中,spring创建一个Bean对象,将对象存入到request域中

                      session   web项目中,spring创建一个Bean对象,将对象存入到session域中

    生命周期属性(如下):<bean中的方法>

            init-method=""    destory-method=""

五、生命周期(方法如上):

        配置一个方法作为生命周期初始化方法,spring会在对象创建之后立即调用

        配置一个方法作为生命周期销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用

六、spring创建对象的方式

    ①空参构造

    ②静态工厂创建(很少使用)

            创建一个工厂对象,里面声明一个静态方法创建对象

    ③实例工厂创建(很少使用)

            创建一个工厂对象,里面声明一个方法创建对象,需要在容器里写两个Bean,用来实例化工厂对象

七、分模块配置

      作用:项目庞大时,需要创建多个配置文件来配置许多对象,最后在引入总配置文件中

      方法: <import  resource="配置文件全路径"/>

八、spring属性注入

        ①set方法注入(最重要、最常用)

	<!-- set方式注入: -->
	<bean  name="user" class="cn.itcast.bean.User" >
		<!--值类型注入: 为User对象中名为name的属性注入tom作为值 -->
		<property name="name" value="tom" ></property>
		<property name="age"  value="18" ></property>
		<!-- 引用类型注入: 为car属性注入下方配置的car对象 ref为引用注入的属性方法-->
		<property name="car"  ref="car" ></property>
	</bean>
	
	<!-- 将car对象配置到容器中 -->
	<bean name="car" class="cn.itcast.bean.Car" >
		<property name="name" value="兰博基尼" ></property>
		<property name="color" value="黄色" ></property>
	</bean>

        ②构造函数注入(首先要有含参的构造函数)

        (如何处理构造函数的重载) : name属性,  index属性和type属性  可以锁定一个构造函数

	<!-- 构造函数注入 -->
<bean name="user2" class="cn.itcast.bean.User" >
	<!-- name属性: 构造函数的参数名 -->
	<!-- index属性: 构造函数的参数索引 index="0"该属性属于参数第一个位置依次类推-->
	<!-- type属性: 构造函数的参数类型  这个参数的类型-->
	<constructor-arg name="name" index="0" type="java.lang.Integer" value="999"  ></constructor-arg>
	<constructor-arg name="car" ref="car" index="1" ></constructor-arg>
</bean>

        ③p名称注入(很少使用)

        ④spel注入(很少使用)

        

        ⑤复杂类型注入(例如数组array,map,list,Properties(配置文件也就是一个map)等)

array注入:

如果数组中只准备注入一个值(对象),直接使用value|ref即可 
<property name="arr" value="tom" ></property>

<!-- array注入,多个元素注入 -->
	<property name="arr">
		<array>
			<value>tom</value>
			<value>jerry</value>
			<ref bean="user4" />
		</array>
	</property>

list注入:

如果List中只准备注入一个值(对象),直接使用value|ref即可 

<property name="list" value="jack" ></property>

<property name="list"  >
		<list>
			<value>jack</value>
			<value>rose</value>
			<ref bean="user3" />
		</list>
	</property>

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>
Properties注入:
	<property name="prop"  >
		<props>
			<prop key="driverClass">com.jdbc.mysql.Driver</prop>
			<prop key="userName">root</prop>
			<prop key="password">1234</prop>
		</props>
	</property>

九、spring中的概念

ioc:     反转控制,创建对象的方式反转了,交给spring程序来创建对象

di:      依赖注入,将必须的属性注入到对象当中,是实现ioc的前提

beanFactory和applicationContext


十、如何在web项目中使用Spring容器

    ①导包5个,在原有的基础上需要多一个spring-web

    ②配置listener,在web.xml中

            listener的名称为:ContextLoaderListener

            并且配置参数,指定spring配置路径

    ③在Action/Controller中,使用工具类获得容器

           用Listener监听servletContext,项目中只创建一个容器, 所有action只从一个servletContext域中获得同一个容器,避免创建许多容器

            获得容器的方法为:WebApplicationContextUtils.getWebApplicationContext(ServletContext sc)

猜你喜欢

转载自blog.csdn.net/toby1123yjh/article/details/80077306
今日推荐