• ioc容器


    对于容器而言需要满足两个方面:

    1、全局唯一

    2、无论何地都可以进行对容器的访问

    对于Spring而言,BeanFactory则就是这样的容器,只不过它过于底层。在我们的日常开发中还是使用ApplicationContex.

    不过ApplicationContex跟BeanFactory有一个显著的区别:ApplicationContex在容器初始化的时候实例化所有的single bean,而BeanFactory则是在第一次使用的时候才会初始化相应的Bean.

    一、ApplicationContext的初始化:

      1、如果配置文件是在类路径下,可以使用new ClasspathXmlApplicationContext("相对于类路径下的文件名");

      2、如果配置文件时再文件系统下,则可以使用new FileSystemXmlApplicationContext("文件系统下的文件名");

          文件系统下的文件名 举例:"beans.xml"这表示相对于用户当前的目录——工程所在的根目录,

                    "file:d:/beans.xml"表示d盘目录下的beans.xml

       3、当然如果觉得xml配置比较麻烦,还可以使用类来充当配置文件,代码如下。当然在使用类进行配置的话,那么得需要AnnotationConfigApplicationContext来初始化容器

    @Configuration
    public class BeanConf {
        
        @Bean(name="car")
        public Car createCar(){
            Car car = new Car();
            car.setId(1l);
            car.setName("法拉利");
            car.setPrice(5000000);
            return car;
        }
    }
    

      4、可以xml和类进行搭配的方式来定义bean的装配。


      对于bean的配置,不仅可以通过在xml中进行配置或在上面第三条使用方法的配置,还可以直接在bean类的定义中直接配置(从而达到定义和配置在一起,相亲相爱不分离)

      通过以下几个注解的方式就可以对一个bean进行定义

      @Repository ——dao实现类  @Service——Service实现类 @Controller——控制器

      当然在经过上面的注解配置后,需要在xml配置文件中或基于java类的配置中给spring 一个指示,spring根据这个指示会扫描某个包下的类看他是否含有上面的注解,如果有的话,则吧bean交给spring来进行控制(类过多的话,spring不可能扫描所有的类,基于这样的考虑性能是一方面吧)

      xml: 需要制定context命名空间

        xmlns:context="http://www.springframework.org/schema/context"

        schemaLocation中添加"

    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd

    "

    <context:compent-scan base-package="..."/>

    当然如果还想在精确点控制的话,可以使用context:compent-scan的子元素context:exclude-filter(排除在外的目标类),context:include-filter(包含在内的目标类)

      java类:。。。

    二、bean的作用域

      bean的作用域影响这bean的生命周期。

    1. singleton 单例bean,如果配置的bean没有显示指定scope则默认是singleton
    2. prototype 每次调用getBean时都会重新new 一个实例
    3. request 适用于web应用程序,每次请求都会重新new 一个实例
    4. session 适用于web应用程序,同一个http session都获取的是同一个对象
    5. globalSession 适用于web应用程序(暂时不知道为什么会定义这么个作用域)
  • 相关阅读:
    分区助手怎么调整磁盘分区的大小
    3dsmax2014的下载、安装与注册激活教程详解
    U深度U盘启动盘制作工具怎么用?U深度U盘启动盘制作工具使用教学
    CAD出现向程序发送命令时出现问题提示解决方法分享
    TeamViewer——可以实现在手机上随时远程控制你的电脑
    CPU-Z五大主要功能及使用方法初步了解
    vs中更改项目名称注意事项
    Oracle 存储过程例子返回记录集
    oracle 调用包体的函数并返回return值
    oracle 中更新update不成功的原因
  • 原文地址:https://www.cnblogs.com/zhengqun/p/3510676.html
Copyright © 2020-2023  润新知