spring基础一(ioc)

本文深入探讨Spring框架在web、service及dao层的应用,解析IOC控制反转与DI依赖注入概念,详细阐述Bean的生命周期、作用范围及配置,同时介绍属性注入的多种方式,包括构造方法、Set方法、p名称空间、SpEL表达式及集合类型注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#Spring 一战式开发
web层:springmvc
service层:Spring的bean管理,Spring的声明式事务
dao层:Spring的jdbc模板,Spring的ORM模块
#IOC(Inversion of Controller)控制反转:把对象的创建权交给Spring
ioc开发需要引入的jar包:
spring-bean,spring-context,spring-core,spring-expression
#IOC的实现原理:
#工厂模式+反射+配置文件
在applicationContext.xml中



新建一个Test类
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“applicationContext.xml”);
UserDao userDao = applicationContext.getBean(“User”);
#IOC和DI
1.IOC:控制反转,将对象的创建权反转给了Spring。
2.DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的 依赖的属性注入(设置)进来。
eg:



#1.4.1Spring的工厂类

[外链图片转存失败(img-zlyIgU9x-1566559228717)(https://i.imgur.com/Fbfxjbh.png)]

1.BeanFactory
2.ApplicationContext
AppilicationContext继承BeanFactory
ApplicationContext(子类):
ClassPathXmlApplicationContext:加载类路径下的配置文件
FileSystemXmlApplicationContext:加载磁盘下的配置文件
#Bean的生命周期
#Bean的相关配置
1.标签中的id和name的区别
id:使用了约束中唯一约束,里面不能出现特殊字符
name:没有使用了约束中唯一约束(理论上允许重复,实际开发中不允许重复),里面允许出现特殊的字符。
2.Bean的生命周期
.Init-method:Bean被初始化的时候执行
.destory-method:Bean被销毁时执行的方法
3.Bean的作用范围
.scope Bean的作用范围

		1.singletone   单例模式(默认的)
		2.prototype:   多例模式

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


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

		5.globalsession 应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对							于session。
	4.属性的注入方式
		1.构造方法的方式的属性注入
			
		2.Set方法的方式的属性注入
			  public void setName(String name) {
  					  this.name = name;
				 }
		
			![](https://i.imgur.com/iQDmkPw.png)

		.对于普通类型:用value来指定值
			  <!--set方法,实现属性的注入-->
	    <bean id="car" class="com.echo.service.Car">
	        <property name="name" value="宝马"/>
	        <property name="price" value="100000"/>
	    </bean>

		.对于包装类型:用ref来表示值
			 <!--属性是包装类型,实现属性的注入-->
   	 <bean id="emp" class="com.echo.service.employee">
        <property name="name" value="echo"/>
        <!--包装类型 car的值 对应于上面 普通类型<bean id="car" class="com.echo.service.Car">-->
        <!--包装类型 对应的值用ref 来表示-->
        <property name="car"#  ref= #"car"/>
    </bean>
		3.p名称空间完成属性的注入
			普通对象: p:属性名=“值”
			对象属性: p:属性名-ref="值“
		 <!--p名称完成属性的注入-->

	    <bean id="emp" class="com.echo.service.employee" p:name="Alice" p:car-ref="car">
	    </bean>

		4.spl表达式	value=#{},也可以用各种你表达式表示

		 <bean id="car" class="com.echo.service.Car">
        	<property name="name" value="#{'Goole'}"/>
       		 <property name="price" value="#{carinfo.setPrice()}"/>
    	</bean>
		5.数组,集合方式的注入,在实现类中定义相应属性的set方法,将属性值注入。
			
							<!--数组和集合集合类型的注入-->
			    <bean id="collections" class="com.echo.service.Collection">
			        <!--数组-->
			        <property name="arrs">
			            <list>
			                <value>"echo"</value>
			                <value>"Alice"</value>
			            </list>
			        </property>
			
			        <!--list集合-->
			        <property name="list">
			            <list>
			                <value>"Gold"</value>
			                <value>"Dails"</value>
			            </list>
			        </property>
			        <!--map-->
			        <property name="map">
			            <map>
			                <entry key="aaa" value="1111"/>
			                <entry key="bbb" value="222"/>
			            </map>
			        </property>
			    </bean>
	5.分模块配置
		.在applicationContext.xml文件中引入applicationContext1.xml配置文件

		 	<!--导入引入数组或集合类型的配置文件 applicationContext1.xml-->
			<import resource="applicationContext1.xml"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值