Spring学习(一)

Spring入门概念

  spring是什么?

Spring Framework(简称Spring)J2EE应用程序框架,不过,更严格地讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container),可以单独利用Spring构筑应用程序,也可以和StrutsWebwork等众多Web应用程序框架组合使用,并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中,也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。

Spring是一个开源的控制反转和面向切面的容器框架,主要目的是简化企业开发

Spring主要两大特点:

IOC:控制反轉 將实例化对象交给Spring框架
    DI:依賴注入    将对象之间的关系交给Spring来维护

    1.給我們創建對象
    2.給我們維護對象之間的關係
        1.一個對象是另一個對象的成員變量(聚合關係)
        2.一個對象是另一個對象方法裏的參數 (組合關係)
        3.一個對象是另一個對象構造函數的對象
    
    ApplicationContext的主要实现类:
    ClassPathXmlAppLicationContext:从类路径下加载配置文件

    FileSystemXmlAppLicationContext:从文件系统中加载配置文件

    Spring支持3中依赖注入的方式
    1.属性注入
    2.构造器注入{
        <bean>
            <constructor-arg value="Audi" index="?"/>//加入index可以实现无序的匹配参数,一般默认不写index,按照规范顺序写

            若字面值中包含特殊字符,可以使用<![CDATA[//这里放入特殊字符]]>把字面值包裹起来。

            可以使用专用的<null/>元素标签为bean的字符串或其他对象类型的属性注入null值
        </bean>
    }

    3.工厂注入

    Spring支持级联属性的配置
        如果对象之间存在对象关联时,可以直接通过成员对象.属性来设置属性

###集合属性  数组、list、set    
    对象关联属性可能是一个集合
    <property name="cars">
        <list>
            <ref bean="cat1"/>
            <ref bean="cat2"/>
        </list>


        <map>
            <entry key = "" value-ref="">;
        </map>

    </property>

    <props>定义java.util.Properties包
        
    <property name="properties">
            <prop key="dbuser">root</prop>
    </property>

    构造器
    <constuctor-arg value="${}"/>

    //引入外部的prop
    <context:property-placeholder location="相对路径"/>
    <property name="properties">
            <prop key="dbuser">//El表达式${"dbuser"}</prop>
    </property>

    使用P命名空间范例 P标签类似于<property>标签
    <bean id = "person" class = " path" p:name="" p:age="" p:cars-ref="cars"/>
    
####Bean的作用域
    可以在<bean>元素的scope属性里设置bean的作用域
    默认情况下,Spring只为每个在IOC容器里生命的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例;
    在bean标签里面加上scope属性
    类别
    1.Singleton 在SpringIOC容器中只创建一个对象
    2.prototype 每次调用新生成一个对象

###SPEL
    #{}
    可以用SPEL来代表bean
    <property name="car" value="#{car}"/>
    可以代表属性
    可以进行运算

####注解
    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件

    特定的组件包括
    @compoment 基本注解,标识了一个受Spring管理的组件
    @respository(标识持久层组件)    
    @Service(标识了业务层组件)
    @Controller(标志了表示层组件)
    
    在ClassPath中扫描组件
    在Spring的配置文件中声明<context:component-scan>:
    base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包里及其子包中的所有类
    当需要扫描多个包时,可以使用逗号分隔。

    <context :component-sacn
        bace-package="包名"
        resource-pattern=""
    >
##组件装配
    元素自动注册DI

    @Autowired和@Resource、@Inject注解的属性


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值