• spring注入简记


    我们知道对象是交给容器来管理的那么

    init() destroy():可以在bean配置中设置对象初识化前执行和销毁后执行

    int-delay=""表示是否延迟实例化即容器实例时还是获取bean时实例化

    bean 中scope=“” 范围属性表示单例或多个

    用来指定bean的作用域

    singleton---单例  只创建一个对象。

    prototype---原型  想创建多少个就创建多少了。

    request---针对Web项目,不同的请求创建单独的Bean对象,同一个请求共享一个Bean。

    session---针对Web项目,不同的会话创建单独的Bean对象,同一个会话共享一个Bean。

    一:采用xml注入配置

    1对象注入<bean id="" class=""></bean>

    2类中注入对象分两种方式

    2.1set注入bean

     <bean ...>

     <property name="" ref="对应bean"> //在类中属性对应的对象引用需有set()方法;

     </bean>

    2.2构造器参数注入bean(类中构造器将需要的注入相关内容做参数

    <bean...>

    <constructor index=0 type=注入的类型 ref=注入的bean />//参数的位置,对应的包名类名,id

    <constructor .../> //参数如果是基本类型直接用 index='' value=""

    3注入的是基本类型,将ref改为value=""

    4集合注入有对应集合标签 如set list pro map

    <property name="set">

    <set>...不同集合赋值有差异(value value pro: key entry :key /value。。。</set>

    </property>

    二,采用注解注入(@resource 默认按名称找不到按类型  @autowired 默认类型)

    首先配置xml文档命名空间,以及添加标签<context:annotatiion-config/> 这样隐式的注册了处理分析注解的解释器,还需添加注解包。

    1.注解种类比较jdk有支持的注解 spring 也有支持的注解,可以使用jdk不依赖框架低耦合注解@resource

    2.注解可以在属性前,也可在set方法前。可以根据类型或者名称寻找xml中的bean.(貌似代码比较简洁了而xml配置不要再那样去嵌套配置了

      原理(大概是:首先注解可以定义存在周期譬如运行期,可以注解标注位置譬如字段属性上方法上,通过遍历所有的bean,然后遍历bean中所有属性和方法,找到所对应的注解然后做相应的处理,再到xml文件中寻找匹配的bean实现注入)

    三  以上都属于手动装配另一种属于自动装配:(auotwire=“” 有个按类型手动装配注解autowired有些相似)

    (只需要bean 中添加属性参数,代码不需要做处理)

    在<bean id="" class=""  autowire="bytype"...>

    bytype:按类型 找到多个抛出异常,没找到注入null

    byname:按名称,没找到也是null

    constructor:按构造器参数注入bean,没找到炮异常。

    autodetect:自动检测如果是默认构造器采用bytype,参数构造器采用constructor方式。

    (听说实现同一个接口bean会被视为同一类型不能被按类型注入待测试)

    四采用自动扫描注入:(这种方式很好狠强大)

    1.首先xml中需要添加命名空间,同时添加<context:componet-scan basebage="包下包括子包中的类">

    将扫描包下类中并且有@service @repository @controller @conponent注解的类。(貌似只是一种可读性一种分类标记,之间没有实际不同意义)

    2.默认的bean 名称为类名首字母小写的名称。

    3.类上同时添加注解@Scope("prototype")可以修改作用域

    4.在初始化方法上添加

    @postConstruct

    init()

    @preDestroy

    destroy()

  • 相关阅读:
    [导入]流失
    [导入]喜欢与爱
    [导入]毕业的大学生的100条忠告
    sql 实现从右边查询制定字符出现的位置
    [导入]毕业了
    gridview 实现多字段综合查询
    Java实现图片添加水印文字(左右下角)
    python安装win32api pywin32 后出现 ImportError: DLL load failed
    Asp.net mvc 速度优化 关注Yslow(1)
    WPF 3D中如何选择模型的一部分并维护模型
  • 原文地址:https://www.cnblogs.com/straybirds/p/5106495.html
Copyright © 2020-2023  润新知