spring之ioc容器

1.首先我们需要对spring框架有一个大概的理解:

spring是一个开源的 框架;

spring为简化企业级应用开发而生。使用spring可以使简单的javaBean实现以前只有EJB才能实现的功能。

spring是一个IOC和AOP容器框架

2.Spring的特点:轻量级,依赖注入,面向切面编程,容器,一站式平台。

3.搭建spring开发环境:

首先,新建一个maven工程,在pom文件中注册需要的jar包(肯定包括spring需要的jar包)

然后,在src/main/resource下创建一个config文件夹,在文件夹config下面新建上下文配置文件applicationContext.xml。其中文件头有固定的格式,可以直接复制粘贴。

最后,如果有实体bean需要被管理,那么就需要把实体bean注册到ioc容器中,在applicationContext.xml中的注册格式为:格式为<bean id="apple" class="包名+类名"></bean>属性中,name可以重复id在ioc容器中必须是唯一的。若 id 没有指定,Spring 自动将权限定性类名作为 Bean 的名字。id 可以指定多个名字,名字之间可用逗号、分号、或空格分隔。

4.spring ioc容器管理Bean的生命周期(spring在Bean生命周期的特定点执行特定的任务)

Spring ioc容器对Bean的生命周期进行管理的过程:

首先,通过构造器或者工厂的方法创建出Bean实例;

其次,为bean的属性设置和对其他bean的引用;

然后,调用Bean的初始化方法;

最后,当容器关闭时,调用Bean的销毁方法。

(在Bean的声明中定义Bean的init-method和destroy-method方法)

<bean id="apple" class="com.lh.spring.ioc.beanTest.Apple" init-method="eaten" scope="singleton" destroy-method="destroy"></bean>

5.在<bean>标签中通过scope属性定义bean的定义域:

singleton :  spring ioc容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init="true"来延迟初始化bean,这时候只有第一次获取bean才会初始化bean。

Prototype:每次从容器中获取bean都是新的对象.

Request和Session:每次HTTP请求都会创建一个新的Bean,该作用域只适用于WebApplicationContext环境。

6两种构造方式:

属性注入:通过set方法来进行注入,在xml文件中定义<property>元素的name和value,或者ref.

构造器注入:通过构造方法来进行注入。(按类型匹配入参,按索引匹配入参)

注入的时候,如果字面值中有特殊字母可以用<![CDATA[]]>进行包裹

7.在属性或者构造器里声明的bean被称为内部bean.

<property name="se">

<bean>

<property name="">

<value></value>

</property>

</bean>

</property>

8.使用P标签示例:

 <bean  id="teach" class="com.lh.spring.ioc.Bean.Teach" init-method="init" p:courses-ref="scoreList" p:size="#{apple.size^3}" p:color="#{apple.color}">

9.集合bean的定义方法示例:
    <!-- <property name="courses" ref="scoreList">
     <list>
        <value>课程1</value><value>课程2</value><value>课程3</value><value>课程4</value>
    </list> 
    </property>  -->

    <property name="teachers">
    <set>
            <value>qingang</value><value>zhaiwanng</value><value>liuhao</value>
    </set>
    </property>
    
    <property name="students">
   <map>
           <entry key="1" value="刘豪"/>
           <entry key="2" value="翟王"/>
   </map>
    </property>
</bean> 
    
    <util:list id="scoreList" > 
    <value>1</value> <value>2</value> <value>3</value> <value>4</value>
    </util:list>
 

10.SPEL表达式示例:
    <bean id="numTest" class="com.lh.spring.ioc.Bean.NumTest">
    <property name="testEqual" value="#{1==1}"/>
    <property name="testNotEqual" value="#{1!=0}"/>
    <property name="testLessthan" value="#{1 lt 2}"/>
   <property name="testLessthanOrEqual" value="#{3 le 4}"/>
    <property name="testAnd" value="#{1==2 and 2==2}"/>
    <property name="testOr" value="#{1==2 and 2==2}"/>
    <property name="testNot" value=" #{ !true}"/>
    <property name="testAdd" value="#{1+1}"/>
    <property name="testAddString" value="#{'1'+'1'}"/>
    <property name="Substract" value="#{1-1}"/>
    <property name="testExponentialPower" value="#{2^2}"/> 
    </bean>
</beans>

11.spring能够从classpath下自动扫描,侦测和示例化具有特定注解的组件

特定组件包括:

@Component:基本注解,标示一个手spring管理的组件

@Respository:标示持久层组件

@Service:标示服务层组件

@Controller:标示表现层组件

(对于扫描到的组件,spring有默认的命名策略:使用非限定类名,第一个字母小写,也可以在注解中通过value属性值标示组件的名称)

12.自动装配:略。。。。。。
 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值