spring入门,对象创建方式,属性注入方式和复杂类型的注入

Spring环境搭建

导jar包

spring核心开发包
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar

spring日志包
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar

创建一个javabean 用Spring 管理 (装入Spring容器中)

 public class User {

	private String username;
	private int age;
	public User() {
		
	}
	...

添加约束(添加约束过程省略)

xmlns:beans="http://www.springframework.org/schema/beans"

spring中对象创建的三种方式

  • 空参的构造方法
    (id和name的意思作用差不多)
<bean id="user" class="com.bean.User">    </bean>
<bean name="user" class="com.bean.User">    </bean>
  • 静态工厂方式
<bean name="user" factory-method="createStaticUserFactory"  class="com.factory.UserFactory"></bean>
  • 实例工厂方式
    实例工厂创建首先要创建工厂的对象
    faactory-bean:工厂的对象
    factory-method:工厂的方法
<bean name="userFactory" class="com.factory.UserFactory"></bean>
<bean name="user2" factory-bean="userFactory" factory-method="createUserFactory"></bean>

spring中属性注入的4种方式

  • set方法注入(推荐使用)
	<bean name="user" class="com.bean.User">
		<property name="username" value="李逍遥"></property>
		<property name="age" value="18"></property>
		<!--引用对象类型注入 将cat对象作为属性 ref表示需要引用其他的对象 -->
		<property name="cat" ref="cat"></property>
	</bean>
	
	<!--准备一个cat对象 可以被其他对象引用 -->
	<bean name="cat" class="com.bean.Cat">
		<property name="name" value="英短"></property>
		<property name="color" value="蓝色"></property>
	</bean>
  • 构造方法注入
    index:表示参数的索引顺序从0开始;
    type:表示参数的类型
	<bean name="user1" class="com.bean.User">
		<constructor-arg name="username" value="赵灵儿" index="0" type="java.lang.String" ></constructor-arg>
		<constructor-arg name="age" value="18" index="1" type="int" ></constructor-arg>
		<!--引用对象类型注入 将cat对象作为属性 ref表示需要引用其他的对象 -->
		<constructor-arg name="cat" ref="cat1"></constructor-arg>
	</bean>
	
	<!--准备一个cat对象 可以被其他对象引用 -->
	<bean name="cat1" class="com.bean.Cat">
		<property name="name" value="折耳猫"></property>
		<property name="color" value="白色"></property>
	</bean>
  • p名称空间注入:实质是set注入
    需要导入 p 命名空间;p:属性名=" “;如果是引用对象类型:p:属性名-ref=” "
xmlns:p="http://www.springframework.org/schema/p"
	<bean name="user2" class="com.bean.User" p:username="林月如" p:age="18" p:cat-ref="cat2"></bean>

	<!--准备一个cat对象 可以被其他对象引用 -->
	<bean name="cat2" class="com.bean.Cat">
		<property name="name" value="大橘猫"></property>
		<property name="color" value="橘色"></property>
	</bean>
  • spel注入( 基本没有)
    spel ,主要是用来取值的,取出其他容器对象的值
	<--准备一个对象-->
	<bean name="users" class="com.bean.User">
		<property name="username" value="李逍遥"></property>
		<property name="age" value="18"></property>
	</bean>
	
	<bean name="user3" class="com.bean.User">
		<property name="username" value="#{users.username}"></property>
		<property name="age" value="#{users.age}"></property>
		<property name="cat" ref="cat3"></property>
	</bean>

	<!--准备一个cat对象 可以被其他对象引用 -->
	<bean name="cat3" class="com.bean.Cat">
		<property name="name" value="野猫"></property>
		<property name="color" value="花色"></property>
	</bean>

生命周期: 有两个相关的属性( 对象中的方法 肯定需要对象调用)
init-method:当前对象创建之后立即调用的方法
destroy-method:当前对象被销毁的时候调用 :Spring容器被关闭之前 销毁所有对象

<bean name="user" class="com.bean.User"  init-method="init"destroy-method="destroy"></bean>

复杂的类型注入:

pojo

public class Vo {

	private Object[] arr;// 数组类型注入方式
	private List list;// 集合类型注入方式
	private Map map;// map集合
	private Properties properties;// properties类型
  • 数组注入
    applicationContext.xml
<!--数组类型注入方式 -->
	<bean name="vo" class="com.bean.Vo">
		<property name="arr">
			<array>
				<value>围城</value>
				<value>22</value>
				<ref bean="cat" />
			</array>
		</property>
	</bean>
  • list集合注入
    applicationContext.xml
<bean name="vo1" class="com.bean.Vo">
		<property name="list">
			<list>
				<value>张爱玲</value>
				<value>001</value>
				<ref bean="user" />
			</list>
		</property>
	</bean>
  • map注入
    applicationContext.xml
<bean name="vo2" class="com.bean.Vo">
		<property name="map">
			<map>
				<entry key="name"  value="韩寒"></entry>
				<entry key="car" value="小毛驴"></entry>
				<entry key-ref="" value-ref=""></entry>
			</map>
		</property>
	</bean>
  • properties注入
    applicationContext.xml
<bean name="vo3" class="com.bean.Vo">
		<property name="properties">
			<props>
				<prop key="name">鲁迅</prop>
				<prop key="haha">11</prop>
				<prop key=""></prop>
			</props>
		</property>
	</bean>

分模块配置

Spring通过<import resource=” "/>分模块配置导入其他Spring配置文件,可以不用将所有的配置写在一个文件里,结构清晰,方便管理

<import resource="applicationContext01.xml" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值