Spring-01

Spring是一个开源框架 并且是轻量级别的框架(模块化)

Spring 是一个IoC 和 AOP 的容器框架

MyBatis ORM框架 持久层框架
SpringMVC是隶属Spring框架中的一个WEB层框架
Spring是一个容器框架
IoC: 控制反转
AO && OOP: 面向切面编程 && 面向对象编程:
OOP针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分
AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
整体包目录如下:
image
创建核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
    <!-- Spring是一个IoC的容器框架 -->
    <!-- IoC控制反转:将权力移交出去   对类进行实例化  替我们服务 -->
    <!-- 容器:主要是来管理Bean的生命周期(创建   使用   销毁) -->
    <!-- 使用Bean标签 -->
    <!-- 
          <bean id="User" class="com.test.model.User"></bean>
                                        等同于
          User u1 = new User();
          
                        当本xml文件被加载    所有的Bean标签所指代的Bean 都会被进行实例化
     -->
    <bean id="User" class="com.test.model.User" scope="singleton">
        <!-- scope="singleton"   单例模式 (默认值)-->
        <!-- scope="prototype"   多例模式                 -->     
        <property name="name" value="bajie"/> 
        <property name="sex" value="男"/>
        <property name="hobby_array">
           <array>
                <value>篮球</value>
                <value>足球</value>
           </array>
        </property>  
          <property name="hobby_list">
           <list>
                <value>篮球</value>
                <value>足球</value>
                <value>篮球</value>
                <value>足球</value>
           </list>
        </property>
          <property name="set">
           <set>
                <value>篮球</value>
                <value>足球</value>
                <value>篮球</value>
                <value>足球</value>
                <value>篮球</value>
                <value>足球</value>
           </set>
        </property>
        
        <property name="map">
            <map>
                <entry key="hobbysmap" value="MAP" />
                <entry key="hobbys">
                     <list>
                        <value>篮球</value>
                        <value>足球</value>
                        <value>篮球</value>
                        <value>足球</value>
                   </list>
                </entry>
            </map>
        </property>
        <property name="properties">
            <props>
                <prop key=""></prop>
            </props>
        </property>
    </bean>

</beans>

加载核心配置文件 并获取对象

ApplicationContext接口
@Test
public void DuQuConfig(){
    //接口 xx = new 类路径+接口(“xml配置文件位置”)
    ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
    //获取对象  ac.getBean("User")此处User指向xml文件中的Bean的id
    //返回到Object类型  所以进行强制转换
    //User user1 = (User) ac.getBean("User");
    //或者 
    //第一个参数依然指向id   后一个参数指向类路径   即可返回想要的类型
    User user1= ac.getBean("User",User.class);
    System.out.println(user1);
}

当进行加载的时候 默认只会实例化一个对象 即如下图:
![image](http://upload-images.jianshu.io
![Uploading 01_414987.png . . .]
/upload_images/6903669-a8989b453e904f88?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

查看帮助文档:

 Attribute : scope

The scope of this bean: typically "singleton" [ 单例模式  只实例化一次 ] 

(one shared instance, which will be returned by all calls to getBean with the given id), or "prototype"  [  多例模式  ]   

(independent instance resulting from each call to getBean).   [  每一次调用都会独立进行实例化  ]  

 By default, a bean will be a singleton, unless the bean has a parent bean definition in which case it will 

 inherit the parent's scope. Singletons are most commonly used, and are ideal for multi-threaded 

 service objects. Further scopes, such as "request" or "session", might be supported by extended bean 

 factories (e.g. in a web environment). Inner bean definitions inherit the scope of their containing bean 

definition, unless explicitly specified: The inner bean will be a singleton if the containing bean is a 

singleton, and a prototype if the containing bean is a prototype, etc.
 Data Type : string






 在进行配置的时候   scope属性的默认值就是  singleton 单例模式   

可进行重新配置   scope = "prototype"
IoC 控制反转 ---- DI 依赖注入(注入的是值)
方式一:使用setter注入方式 注意在Bean里面必须有Set()方法

在xml文件内进行配置的时候
<property name="xxxx">
这里的name可以进行补全 实际上是框架自动映射了Bean里面的Set()方法的首字母小写

[在这里只介绍java的内置类型的注入]
<bean id="User" class="com.test.model.User" scope="singleton">
        <property name="name">
        //此处只能注入 字符串 整型等 简单的数据类型  
        //<value>标签里的内容两端不能存在空格 spring是识别空格的
        //因此等号两边不允许有空格  属性和属性之间通过空格进行分隔
            <value>bajie</value>
        </property>  
        //存在一种简写方式  如下
         <property name="name" value="bajie"/> 
</bean>

除却简单数据类型   下面代码演示注入Array  List  Set  Map类型的数据

Bean里的属性如下所示:

private String name;
private String sex;
private String [] hobby_array;
private List<String> hobby_list;
private Set<String> set;
private Map<String,Object> Map;
private Properties Properties;

xml文件内的配置如下所示:

<property name="hobby_array">
       <array>
            <value>篮球</value>
            <value>足球</value>
       </array>
    </property>  
    
      <property name="hobby_list">
       <list>
            <value>篮球</value>
            <value>足球</value>
            <value>篮球</value>
            <value>足球</value>
       </list>
    </property>
    
      <property name="set">
       <set>
       //set类型依然会有去重的功能
            <value>篮球</value>
            <value>足球</value>
            <value>篮球</value>
            <value>足球</value>
            <value>篮球</value>
            <value>足球</value>
       </set>
    </property>
    
    <property name="map">
        <map>
            <entry key="vip" value="会员" />
            //或者如下写法  指定key后 value为List类型
            <entry key="hobbys">
                 <list>
                    <value>篮球</value>
                    <value>足球</value>
                    <value>篮球</value>
                    <value>足球</value>
               </list>
            </entry>
        </map>
    </property>
    
    //跟map对应的 存在一个properties  这个是HashTable的实现类  HashTable又是对Map类的实现
    //所以properties也是Map的一种
    
    <property name="properties">
        <props>
        //此时value内只能存在String类型的值
            <prop key="vip">String</prop>
        </props>
    </property>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容