Spring学习笔记

Spring的作用

Spring可以解决业务逻辑层和其他各层的耦合问题,也是一个框架的粘合剂,它让面向接口编程思想贯穿了整个系统,特点:高内聚,低耦合,设计层框架!

主要学习spring的以下部分:

A.IOC思想,B.AOP编程,C.声明式事务的支持,D框架无缝整合其他框架

常见模块?

20多个子模块,模块按组7大块,核心容器、数据访问/集成,Web,AOP(面向切面编程)、设备、消息和测试

IOC是什么?

控制反转,调用者的实例创建不再由调用者自己创建,而是由spring容器创建,这个过程把实例创建的控制权由应用代码转移到了外部容器,控制权发生了改变。

DI是什么?

依赖注入,给对象赋属性值,一定要保留空的构造方法和get/set的方法!

Bean标签里四个属性的作用:

1.Name属性:给对象取名,名字可以同时取多个,但是不同的对象不能重复

2.Scope对象作用域属性:

scope = "singleton"默认值,Spring容器默认创建的对象是单例!

scope="prototype"  创建的对象是多例(每次使用对象的时候额外创建一个新的

scope="session"表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!

scope="request"表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个

注意:后两个只能用在web项目里

3.对象懒创建(只有在scope = "singleton"才会生效)

lazy-init表示对象的加载时机(true:懒加载(使用对象的时候才创建);false(spring框架一启动就加载))

4.对象创建完成后调用的方法,和对象销毁后调用的方法

init-method="对象创建完成后调用的方法" 

destroy-method="对象销毁后调用的方法"

Spring创建对象的四种方式?

<!--方式1:无参构造方法创建对象-->

 <bean id="p1" name="person1,person2" class="com.swjd.bean.Person" scope="singleton" lazy-init="true" init-method="init" destroy-method="destroy">

<property name="id" value="957"></property>   

<property name="name" value="貂蝉"></property> 

 <property name="sex" value="女"></property>

 </bean>

<!--方式2:用带参的构造方法创建对象-->

<bean id="p3" class="com.swjd.bean.Person">

    <constructor-arg index="0" type="int" value="9528"></constructor-arg>

    <constructor-arg index="1" type="java.lang.String" value="德玛西亚"></constructor-arg>

    <constructor-arg index="2" type="java.lang.String" value="男"></constructor-arg>

</bean>

<!--方式3:用静态工厂创建对象-->

<bean id="p4" class="com.swjd.beanfactory.PersonFactory" factory-method="createPerson">

</bean>

<!--方式4:用非静态工厂创建对象-->

<bean id="noStaticfactory" class="com.swjd.beanfactory.NoStaticPersonFactory">

</bean>

<bean id="p5" factory-bean="noStaticfactory" factory-method="createPerson"></bean>

Spring依赖注入的4种方式?

1.调用set方法注入

<bean id="m1" class="com.swjd.bean.Man">

    <!--第一种:依赖注入的方式:set注入-->

    <property name="id" value="1"/> 

   <property name="name" value="刘德华"/>  

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

    <property name="dog">     

       <ref bean="d1"/>    

        </property>

</bean>

2.调用带参的构造方法注入

<bean id="m2" class="com.swjd.bean.Man">

<!--第二种:依赖注入的方式:带参的构造方法-->

<constructor-arg index="0" type="int" value="2"/>

<constructor-arg index="1" type="java.lang.String" value="蔡徐坤"/>

<constructor-arg index="2" type="int" value="20"/>

<constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"/>

</bean>


3.P命名空间注入(本质依旧是set注入,语法简洁一些)

<bean id="m3" class="com.swjd.bean.Man" p:id="3" p:name="八戒" p:age="108" p:dog-ref="d1"></bean>

4.Spel表达式注入

<bean id="m4" class="com.swjd.bean.Man">

<property name="id" value="#{m1.id}"></property>

<property name="name" value="#{m2.name}"></property>

<property name="age" value="#{m3.age}"></property>

</bean>

复杂类型的注入:

1.注入对象

2.注入数组

<property name="hobbies"  >       

 <array>            

<value>123</value>            

<value>123</value>        

</array>    

</property>

3.注入集合

List:

<property name="subject">

        <list>

            <value>1234</value>

            <value>1234</value>

        </list>    

</property>

Set:

 <property name="boyFriends">

        <set>            

<value>12345</value>

 <value>12345</value>

      </set>

 </property>

5.注入map

<property name="map">

        <map>           

 <entry key="cn" value="中国"/> 

 <entry key="ru" value="俄罗斯"/> 

       </map>   

 </property>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 一、Spring框架 1.1 Spring框架是什么 Spring是一种容器框架,用于配置各个组件(bean)并且...
    Jane_Static阅读 387评论 0 0
  • 专题一(1)Spring Framework Runtime 遇到的问题:1,业务代码都使用接口,按照接口编程,能...
    Hughman阅读 584评论 0 3
  • 主要是学习spring容器bean的创建、bean的作用域、依赖注入、懒加载、初始化方法与销毁方法 测试代码 S...
    站在巴黎铁塔阅读 119评论 0 0
  • Spring致力于提供一种方法管理你的业务对象。在大量Java EE的应用中,随处可见Spring。今天我将简单的...
    JAVA架构师的圈子阅读 1,328评论 0 16
  • 概述 Spring是什么? Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但是现在已经不止于企...
    琅筑阅读 1,162评论 2 8