Spring 学习笔记 - 1

Spring学习之 简介

1、Spring 管理的Bean默认是单例的,使用scope="protoType"则为多实例,但是该Bean对象下的依赖还是单例的。

2、Spring 注入方式:

属性注入:

<property name="age" value="25"></property>

构造方法注入:(顺序+索引)

顺序:<constructor-arg type="int" value="25"></constructor>

索引:<constructor-arg index="0" value="25"></constructor>

非静态工厂方法注入:

<bean id="peopleFactory" classs="com.zhagener.factory.PeopleFactory"></bean>
<bean id="people" factory-bean="peopleFactory" factory-method="creatPeople"></bean>

静态工厂方法注入:

<bean id="people" factory-bean="peopleFactory" factory-method="creatPeople"></bean>

泛型依赖注入:

3、Spring 参数注入方式:

基本类型注入:

<property name="age" value="25"></property>

引用类型注入:

<property name="dog" ref="dog_spring_id"></property >

内部Bean注入:

<bean name="people" class="com.zhagener.entity.People">

<property name="name" value="zhansan"></property>

<property name="dog">

<bean class="com.zhagener.entity.Dog">

<property name="name" value="Tom"></property>

</bean>

</property >

</bean>

null值:

<bean name="people" class="com.zhagener.entity.People">
<property name="name" value="zhangsan"></property>
<property name="dog">
<null></null>
</property>

</bean>

级联注入:(级联注入时,Dog对象必须在People类中实例化)

<bean name="people" class="com.zhagener.entity.People">

<property name="name" value="zhansan"></property>

<property name="dog.name" value="Jack2"></property >  

</bean>

集合注入:


<bean name="people" class="com.zhagener.entity.People">
<property name="name" value="zhansan"></property>
<property name="dog.name" value="Jack2"></property >  
<property name="hobbies">
<list>
<value>唱歌</value>
<value>跳舞</value>
</list>
</property>
<property name="loves">
<set>
<value>唱歌</value>
<value>跳舞</value>
</set>
</property>
<property name="works">
<map>
<entry>
<key><value>白天</value></key>
<value>上班</value>
</entry>
<entry>
<key><value>晚上</value></key>
<value>睡觉</value>
</entry>
</map>
</property>
<property name="addresses">
<props>
<prop key="address_1">aaaa</prop>
<prop key="address_2">bbbb</prop>
</props>
</property>

</bean>

4、Spring 自动装配的三种方式:

default-autowire="byName"
default-autowire="byType"
default-autowire="constructor"

注意:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误。

5、Spring 方法注入:

每次People是一个实例,每次Dog也是一个实例的实现方法:
1、将People类声明为abstract类,将getDog方法声明为abstract方法。
2、在bean.xml中配置如下:
<lookup-method name="getDog" bean="dog">
</lookup-method>

6、Spring 方法替换:

People1 改调用People2的getDog方法
1、People2必须 implements MethodReplacer
2、< replaced-method name =" getDog " replacer =" people2 " />

7、Spring Bean之间的关系

继承:

<bean id="abstractpeople" class="com.zhagener.entity.People" abastract="true">
<property name="className" value="高三19班"></property>
<property name="age" value="20"></property>
</bean>

<bean id="zhansan" parent="abstractPeople">
<property name="id" value="1"></property>
<property name="name" value="zhansan"></property>
<property name="age" value="30"></property>
</bean>

依赖:

depend-on="bean_spring_id" 先加载所依赖的对象


引用:

<property name="dog" ref="dog_spring_id"></property>


8、bean 作用范围:

singleton 容器中仅有一个Bean实例,Bean以单例的方式存在;

prototype 每次从容器中调用Bean时,都返回一个新的实例;

request 每次HTTP请求都会创建一个新的Bean;

session 同一个HTTP Session共享一个Bean;

global session 同一个全局Session共享一个Bean,一般用于portlet应用环境;

application 同一个Application共享一个Bean;















3、加载Spring

ApplicationContext applicationContext = new ClassPathXmlApplication("beans.xml")

applicationContext.getBean(bean_spring_id);



<entry>
<key><value>白天</value></key>
<value>上班</value>
</entry>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值