spring入门1

来源:互联网 发布:电脑无线mac地址查询 编辑:程序博客网 时间:2024/06/14 07:01
注意:使用p和c名称空间,尽量不要在里面调用类的方法,因为只要项目启动,就会扫描bean, 默认执行.


1.  beans和core 他们提供了spring框架最基本功能: IOC和di

    context上下问对,基于beans与cores

    spel 他是spring提供的一个表达式语言.


2. schema 文件夹存放的 xml 的schema约束.

   src下创建一个关于spring的配置文件, applicationcontext.xml


3. loc  控制反转 : 原来由我们自己实例化的对象交给我们spring容器来实例化,这时候对象的初始化的权利就会反转.

   1.在xml中配置: <bean id="" class="全类名">

   2.spring 中提供了beanfactory工厂,我们一般使用的是他的子接口类applicationcontext,读取配置文件,实例化对象

     applicationContext a =  new classpathxmlapplicationContext("application.xml");

   3.a.getbean("id");


4. DI : 在spring框架负责创建bean对象,动态的将依赖对象(也就是参数)注入bean组件(方法)中.

       
5.bean获取与实例化 ,它采用延迟加载的方案,只有真正的getbean时才会实例化bean.

   applicationcontent 他是扩展了beanfactory接口,

   applicationcontent实现类 FileSystemxmlapplicationcotext("src/..xml");classPathxmlapplicationcontext;

   applicationcontext他会在配置文件加载的时候,就会初始化bean,

   并且applicationcontext,在不同的应用层的context实现.


6. name和id:  name; 不同包含特殊符合,为了更好的扩展    id: 遵守xml规范,名称内不能包含特殊符合

   
7. 使用beanfactory获取bean ,采用延迟加载,  applicationcontext,采用加载配置文件就获取,提交预处理错误的存在.


8.bean的实例化方式:
 
    1.无参数构造, bean类中必须提供无参数构造   

    2.静态工厂方法: 需要创建一个工厂类,在工厂类中提供static返回 bean 对象的方法就可以

              配置文件中, <bean name="" class="工厂类的全类名" factory-method="工厂内方法名">


        3.实例工厂方法: 需要创建一个工厂类,在工厂类中提供非static返回 bean 对象的方法就可以

              配置文件中, <bean name="工厂名" class="工厂类的全类名">

                 <bean name="类名"   factory-bean="工厂名" factory-method="工厂内方法名">


9. bean的作用域: 在bean标签内 scope=""

   可取值:
   prototype : 多例  每一次从spring容器中获取时,都会返回一个新的实例.

   singleton : 单例  代表springIOC容器中只有一个bean实例.(默认)

   request : 用在web开发中, 将bean对象使用request.setrrtribute()存储在request域中.

   session : 用在web开发中, 将bean对象使用session.setrrtribute()存储在session域中.

   在开发常用的值是 singleton 与 prototype


10 bean的生命周期: 一共十一步

   1. 实例化对象  2. 封装属性 3.如果实现了beannameaware 重写方法, 得到bean的id或name值

   4.如果实现了applicationaware 重写方法, 得到application的对象


    第三步和第四步是让bean了解spring容器.  第五步和第八步是 对指定bean进行功能增强.

    1.对于bean的生命周期,两个方法: 增强bean可以使用后处理bean

    2. 如果需要初始化或销毁操作我们可以使用 init-method destroy-method


11.bean标签下注入:  

    1.构造器注入 <construction-arg index="要注入的第一个属性",type="java.langString " value="">

    2.set方法注入 <property name="" value="">

    3.构造标签和property标签的:  ref属性的值为另一个bean对象.bean对象必须先声明,完成引用类型的注入.

    4 .<bean>.标签下集合属性注入: 专门的标签来注入

       1. list集合或数组 <property name="list"> <list> <value>sfda

       2. set集合: <property name="set"> <set> <value>sfda

       3. map集合: <property name="map"> <map><entry key=""或Key-ref value=""或value-ref>

       4. properties :  <property name="map"> <props><prop key="">值


12. spring2.0后   名称空间p和c的使用: 他们是虚拟的, 嵌入在spring内核中的,

  1.使用 p 名称空间可以解决我们setter注入时 <property> 简化

        前提: 把xmls:p = .....schema/p

        使用: 在 bean 标签内: p:成员属性名="值"
 

  2.  使用 c 名称空间可以解决我们构造器注入时<constructor-arg>简化  

        前提: 把xmls:c = .....schema/c

        使用: 在 bean 标签内: c:成员属性名="值" 或c:成员属性-ref



13. spring 中 spel表达式;  类似与 ognl 或 el表达式 完成对象属性存储以及方法调用  spring3.0提供的.

    原来: ref 快 , 用 value="#{dog.age或getage()+10}"   (很少使用)



14. 注解开发:  

   1. 在xml中 一个约束文件,context名称空间, <context:component base-package="com.xc"/>

         指明spring扫描哪个包,它包含了 <context:annotation-config/>功能是作用是让spring常用的标签生效


   2. @component("id名")在类上面, 如果没指定id名, 会默认以类名首字母小写.

   3.在spring2.5后为@Component添加了三个衍生的注解 ,针对不同的层用, 如果不确定哪个层,就用@component

    @Repository 用于DAO层

    @Service 用于service层

    @Controller  用于表现层


  4.属性依赖注入:

    1.简单属性或set方法注入:  @value("值")

    2.复杂属性或set方法注入:  对引用类型的成员属性,@autowired  默认是按照类型进行注入.

                              加上@qualifier("id名"),可以根据名称注入.

                              另一种注解 @resuore(name="id")


   3. @autowired 和 @resuore 两种注解的区别:

       1. 都可以写在字段上,或卸载set方法上

       2. @autowired 默认是按照类型进行注入.

           @resuore是javaee的提供注解, 减少了与spring耦合,默认按照name记性装配, 查找不到,再按照类型注入.
     


   5.其他注解  @scope(值) 描述bean的作用域   在自定义初始化方法上加@postconstruct

        在销毁方法上加 @predestroy 只对于scope(singleton) 有效, 调用close方法时候才能够执行.


15. spring整合Junit4,  

   1.导入spring-test4-release.jar包

   2.在类上面 @runwith(springjunit4classrunner.class) @contextconfiguration(locations="classpath:...xml")


16. spring 在web开发中的应用.

  1.导入一个jar包

  2.在web.xml 配置<listener-class> org........web.contextloaderlistener

    contextloaderlistener他实现了servletcontextlistener,他是监听整个容器操作的

     在这个listener中,当我们服务器启动时, contextloaderlistener他帮我们创建了servletcontext对象
     
     而将applicationcontext对象的一个实现类webapplicationcontext存入到了servletcontext中.

   
    servletcontext.get

  3.我们还需要在web.xml文件中配置 applicationcontext.xml文件,  默认情况下会在web-inf目录下查找

    全局变量: <context-param> <param-name> contextconfiglocation</param-name>
                    <param_value> classpath:applicaitoncontext.xml

   就是在src下查找配置文件


原创粉丝点击