• Spring--SpringBean管理


    • ·Spring的工厂类

        可以使用FileSystemXmlApplicationContext来读取磁盘上的配置文件

        BeanFactory是调用getBean方法时才实例化对象 而 ApplicationContext是一加载配置文件就实例化对象

    • ·Spring的Bean管理(XML方式)

        三种实例化Bean的方式

      • 使用构造器实例化(默认无参数)

          Bean1

    public class Bean1 {
        public Bean1(){
            System.out.println("Bean1被创建了");
        }
    }

            配置文件中

        <!-- 第一种,无参构造器的方式-->
        <bean id="Bean1" class="com.windbag.ioc.demo2.Bean1"></bean>
      • 使用静态工厂方法实例化(简单工厂模式)

          Bean2  

    public class Bean2 {
    
    }

           Bean2Factory

    public class Bean2Factory {
        public static  Bean2 createBean2(){
            System.out.print("Bean2Factory的方法已经执行了");
            return new Bean2();
        }
    }

              配置文件    

        <!-- 第二种:静态工厂的方式-->
        <bean id="Bean2" class="com.windbag.ioc.demo2.Bean2Factory" factory-method="createBean2"></bean>
      • 使用动态工厂方法实例化(工厂方法模式)

          Bean3

    public class Bean3 {
    }

              Bean3Factory

    public class Bean3Factory {
        public Bean3 createBean3(){
            System.out.print("Bean3Factory的方法执行了");
            return new Bean3();
        }
    }

            配置文件

        <!-- 第三种:实例工厂的方式-->
        <bean id="Bean3Factory" class="com.windbag.ioc.demo2.Bean3Factory"></bean>
        <bean id="Bean3" factory-bean="Bean3Factory" factory-method="createBean3"></bean>

        Bean的配置

      • ·id和name
        •   -一般情况下,装配一个Bean时,通过指定一个id属性作为Bean的名称
        •     -id 属性在IOC容器中必须是唯一的
        •   -如果Bean的名称中含有特殊字符,就需要使用name属性
      • ·class
        •   -class用于设置一个类的完全路径名称,主要作用是IOC容器生成类的实例

        Bean的作用域

        

          scope="prototype" 在spring整合struts2的action时候使用   scope="singleton"单例 这两个用的比较多

        Bean的生命周期

        

    1. instantiate bean对象实例化
    2. populate properties 封装属性
    3. 如果Bean实现BeanNameAware 执行 setBeanName
    4. 如果Bean实现BeanFactoryAware 或者ApplicationContextAware 设置工厂setBeanFactory 或者上下文对象 setApplicationContext
    5. 如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforelnitialization
    6. 如果Bean实现InitializingBean 执行 afterPropertiesSet
    7. 调用<bean init-method="init">指定初始化方法init如果存在类实现BeanPostProcessor(处理Bean),执行postProcessAfterInitialization
    8. 执行业务处理
    9. 如果Bean实现DisposableBean 执行 destroy
    10. 调用<bean destroy-method="customerDestroy">指定销毁方法customerDestroy
    11. 调用<bean destroy-method="customerDestroy">指定销毁方法customerDestroy

        第五步和第八步重要 后处理Bean 增强用的 也就是代理模式

    • ·Spring的属性注入(XML方式)

        Spring的属性注入

      • -构造函数注入
        • 通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用。
          构造器注入在<constructor-arg>元素里声明的属性
      • -属性setter方法注入
        • 使用set方法注入,在Spring配置文件中,通过<property>设置注入的属性 如果有对象类型的值使用ref来注入
      • p命名空间
        • p:<属性名>="xxx”引入常量值
          p:<属性名>-ref="xxx"引用其它Bean对象
      • SpEL注入
        • ·SpEL:spring expression language,spring表达式语言,对依赖注入进行简化
          ·语法:#{表达式}
          ·<bean id=""value=“#{表达式}">
          SpEL表达式语言
          语法:#}
          #{‘hello'}:使用字符串
          #{topicld3}:使用另一个bean
          #{topicId4.content.toUpperCase0}:使用指定名属性,并使用方法
          #{T(java.lang.Math).P}:使用静态字段或方法
    • ·Spring的Bean管理(注解方式)

      • 在使用前在配置文件中的头改成
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--开启注解扫描================-->
        <context:component-scan base-package="com.windbag.demo1"/>
    </beans>
      • ·Spring2.5引入使用注解去定义Bean
      • -@Component 描述Spring框架中Bean
      • ·除了@Component外,Spring提供了3个功能基本和@Component等效的注解
      • -@Repository 用于对DAO实现类进行标注
      • -@Service 用于对Service实现类进行标注
      • -@Controller 用于对Controller实现类进行标注
      • ·这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强
    • ·Spring的属性注入(注解方式)

      •  ·使用@Autowired 进行自动注入
      • ·@Autowired 默认按照类型进行注入
        • -如果存在两个相同Bean类型相同,则按照名称注入
      • ·@Autowired注入时可以针对成员变量或者set方法
      • ·通过@Autowired的required属性,设置一定要找到匹配的Bean
      • ·使用@Qualifier指定注入Bean的名称
      • ·使用Qualifier 指定Bean名称后,注解Bean必须指定相同名称
      • ·Spring提供对JSR-250中定义@Resource标准注解的支持
      • ·@Resource和@Autowired注解功能相似 但是要写name=“..”
    • 传统XML配置和注解配置混合使用

      • ·XML方式的优势(配置Bean)
      •       -结构清晰,易于阅读
      • ·注解方式的优势(注入属性)
      •       -开发便捷,属性注入方便·XML与注解的整合开发
      • -1、引入context命名空间
      • -2、在配置文件中添加context:annotation-config标签

     

  • 相关阅读:
    extjs 小总结
    button 带有自动提交功能。
    跑马灯效果 extjs
    ExtJs之Ext.data.Store
    dojochina ext .rar
    后台得到extjs中gridpanel选中行的某个值
    关于JavaScript“跨域”问题的总结
    Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指南
    [修补 Patch] 重命名上传文件的解决办法
    容器Collection_2
  • 原文地址:https://www.cnblogs.com/windbag7/p/9544089.html
Copyright © 2020-2023  润新知