zoukankan      html  css  js  c++  java
  • spring笔记----看书笔记

    上周末看了一章以前javaee轻量级的书spring部分,简单做了一些笔记

           //    ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");//从类加载路径搜索配置文件
    	     ApplicationContext ac=new FileSystemXmlApplicationContext("src/bean.xml");//从相对路径或绝对路径搜索配置文件
    
    设值注入:setter方法,xml的bean里property
    构造注入:构造器,xml的bean里constructor-arg
    
    bean.xml设置<property name="lyx" value="哈哈"></property>,通过setter,例如 public void setLyx(String name) 获取bean里面的值
    
    国际化:
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames" >  //messageSource 和basenames名字都不能变
         <list>
          <value>message</value>  //message、message_zh_CN.properties、message_en_US.properties
         </list>
    </property>
    </bean>
    比如hello={0},通过String hi=ac.getMessage("hello", new String[]{"哈哈"},Locale.getDefault(Locale.Category.FORMAT));
    
    ApplicationContextAware接口,Spring容器会在创建该Bean之后,
    	自动调用该Bean的setApplicationContext()方法,调用该方法时,
    	会将容器本身作为参数传给该方法
    
    applicationcontext事件机制:ApplicationListener监听ApplicationEvent事件类
    
    spring的作用域有:
    singleton:springioc容器中,作用的bean只生成一个实例
    prototype:每次获取该prototype作用域bean都生成新的一个实例
    request:一次http对话,request作用域的bean只生成一个bean实例
    session:一次http对话,session作用域的bean只生成一个bean实例
    global session:每个全局的httpsession对应一个bean实例
    
    自动装配:autowire,default-autowire
    no:必须通过ref元素定义
    byName:通过bean的id进行setter该方法名字
    byType:包含不要Name,直接setter就可以了
    constructor:和byTpye相似,找不到与构造器参数类型匹配的bean就抛异常
    autodetect:根据bean内部决定使用constructor或byType
    
    嵌套Bean:防止某个bean被访问,把该bean放在有name的bean <property name="" >内部
    <bean id="chinese" class="com.ij34.service.impl.Chinese" >
    <property name="dog" ><bean class="com.ij34.service.impl.DaHuang"/></property>
    </bean>
    
    注解配置Annotation:
    @Configuration:修饰一个java类
    @Bean:修饰一个方法,有返回值,构成了一个bean
    @Value:修饰一个Field,相当于为配置一个变量
    @Import:导入其他java配置类
    @Scope:修饰一个方法,指定对应的Bean的生命域
    @Lazy:修饰一个方法,指定对应的Bran是否需要好延迟初始化
    @DependsOn:初始化对应的Bean之前初始化指定的Bean
    @ImportResource:加载xml配置文件
    
    spring创建bean的三种方式:调用构造器,调用静态工厂方法,调用实例工厂方法
    
    静态工厂方法:
    <bean id="dog" class="静态工厂类"
    factory-method="静态工厂类里面的方法">   
    <!-- 配置静态工厂方法的参数 -->
    <constructor-arg value="一个参数,如果相同于静态工厂类里面的方法的参数,就返回该参数类的方法"/>
    <!-- 驱动Spring以"我是狗"为参数来执行dog的setMsg()方法 -->
    <property name="msg" value="我是狗"/>
    </bean>
    
    实例工厂方法:
    <bean id="chinese" factory-bean="工厂Bean名字" 
    factory-method="工厂Bean里面的方法名">
    <!-- 配置实例工厂方法的参数 -->
    <constructor-arg value="chin"/>
    </bean>
    
    抽象bean不能被实例化。抽象bean的价值在做父bean被继承,配置设置成abstract="true"
    
    spring里bean继承与java继承区别:前者是对象与对象之间的关系,后者是类与类之间的关系;前者可以是不同类型,后者子类可看做一个特殊的父类;前者子bean不能作父bean使用,后者子类可以完全当作父类实例使用。
    
    Spring中bean容器的生命周期
    注入依赖关系之后的行为有:使用init-method属性、实现InitializingBean接口
    bean销毁之前的行为有:使用destroy-method属性,实现DisposableBean接口
    
    lookup-method方法:bean定义为抽象类里面有抽象方法名与lookup-method的方法名相同。解决singleton与prototype作用域不同步
    
    获取其他bean的属性值
    <bean id="son2" class="org.crazyit.app.service.Son">
    <property name="age">
    <!-- 使用嵌套Bean为调用setAge()方法指定参数值 -->
    <bean id="person.son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
    </property></bean>
    或者<bean id="son2" class="org.crazyit.app.service.Son">
    <property name="age">
    <util:property-path path="person.son.age"/>
    </property></bean>
    
    获取Field(targetClass,targetField,targetObject)的值
    <bean id="theAge1"class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
    <!-- targetClass指定访问哪个目标类 -->
    <property name="targetClass" value="java.sql.Connection"/>
    <!-- targetField指定要访问的Field名 -->
    <property name="targetField" value="TRANSACTION_SERIALIZABLE"/>
    </bean>
    简化配置<util:constant id="theAge1"static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>
    
    获取方法的返回值MethodInvokingFactoryBean
    
    xml的bean配置才用p:和c:和util:命名简化配置
    

      

  • 相关阅读:
    【t034】Matrix67的派对
    【t042】炮击坦克
    Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
    阿里云平台
    OpenShift:外国的免费云平台
    注册亚马逊云服务
    腾讯云
    微信公众号免费进行开发者中心云服务器配置
    消息的接收与响应
    那个学完这个小程序创业课程的小白现在月入17万
  • 原文地址:https://www.cnblogs.com/tk55/p/9172305.html
Copyright © 2011-2022 走看看