zoukankan      html  css  js  c++  java
  • spring学习IOC

    BeanFactory,bean工厂

    ApplicationContext ,继承自BeanFactory的bean工厂。

    使用xml配置文件:ClassPathXmlApplicationContext

    注入类型:

    1.setter注入(主要方法)

    2.构造方法

    bean 可以使用id来标识,也可以使用name来标识。

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService">
    <property name="userDAO" ref="u"></property>
    </bean>

    <bean id="u" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.dao.impl.UserDAOImpl">
    </bean>

    简单类型注入:

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService">
    <property name="id" value=1></property>
    </bean>

    需要注意的话,使用setter来注入的话,property的name的值是setter中的名字,而不是属性的名称。比如上面的来说:

    <property name="userDAO" ref="u"></property>则在userservice这个类中必须有一个setUserDAO方法,而不论这个userdao在service声明的变量名。

    生存范围: scope默认是单例singleton,也就是prototype,非单例模式

    自动装配:不指定property中所指定的bean,由spring给我们自动装配。

    1.bytype:按照类型自动装配

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService" antowire=”bytype”>
    </bean>

    在xml中必须有一个类型为Userdao的bean,而且必须只能有一个。

    2.byname:按照名字自动装配,可以在beans中设置全局的类型

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService" antowire=”byname”>
    </bean>

    在xml中必须有一个name为userdao的bean

    生命周期:可以在beans中设置全局的类型

    lazy-init=”true”:

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService" lazy-init=”true”>
    </bean>

    在容器初始化的时候,也就是context初始化的时候,不进行bean的初始化,当get的时候,才会初始化这个bean。

    <bean id="userservice" class="org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService" init-method=”init” destory-method=”destory”>
    </bean>

    在org.lxzh.taiji.springTest.AbsrtractOrientProgramming.service.UserService这个类中初始化的时候调用init,结束的时候调用destory方法。

    如果想看到destory的输出,需要显式的调用APPLICATIONCONTEXT的destory方法。

    但这个不能和scope=”prototype“使用。

    使用spring中的Annotation:

    image

    加上上面的context:annotation-config实际上是已经初始化了4个processor,具体的可以参看spring 的文档。

    它们会检查程序中的标注,看有没有自己认识的标注,然后将配置文件中的bean赋值给带有标注的类。默认的是bytype的setter方法。

    @Autowired注解:

    image

    image 、、

    后面的qualifier是为了使用bean的name是u的bean。

    @Resource注解:默认是byname,可以指定特定的名称。

    image

    @Component注解:

    image

    使用component注解实际上就相当于在beans.xml中使用了一个bean的定义。

    下面指定使用component标签所生成的bean的name是“userDAO”.

    image

  • 相关阅读:
    H.264 RTP PAYLOAD 格式
    ARM:移动GPU往PC GPU效能迈进
    汪墩一中复校设想
    jconsole 和jvisualVM 监控远程 spring boot程序
    jenkins 登录远程机器并执行脚本,脚本中有后台执行的程序无法执行解决方法。
    linux下的抓包工具tcpdump
    adb logcat查看某个进程的输出日志
    Flask-SQLAlchemy 中多表链接查询(不使用外键)
    使用cnpm 安装vue.js
    Jmeter在非GUI环境下传递参数(命令行&Jenkins配置)
  • 原文地址:https://www.cnblogs.com/lxzh/p/2798310.html
Copyright © 2011-2022 走看看