上周末看了一章以前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:命名简化配置

  

spring笔记----看书笔记的更多相关文章

  1. 《大象UML》看书笔记2:

    <大象UML>看书笔记2 抽象角度:                                                        在为现实世界建模的时候,首先要搞清楚有多 ...

  2. JavaScript看书笔记01

    JavaScript看书笔记... ------------------- JavaScript允许var定义语句出现在函数内部的任意位置.JS中使用Var来显示的给变量声明 JavaScript是一 ...

  3. 数据结构看书笔记(二)--算法(Algorithm)简介

    算法:是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:算法具有五个特性:输入.输出.有穷性.确定性.可行性 输入输出:算法具有零个或多个输入:至 ...

  4. 精通javascript(看书笔记)

    变量的类型检查 //检测类型 var str = "Hello World"; if (typeof str=="string") {//使用typeof来判断 ...

  5. UML看书笔记1:主体思想

    对象设计需要解决的三大问题:      1.把“现实世界”映射到“对象世界”      2.从“对象世界”描述“现实世界”      3.验证“对象世界”是否反映了“现实世界” 现实世界与我们的对象世 ...

  6. 《深入理解 JVM 虚拟机》 --- 看书笔记

    1.JVM 内存溢出 1.堆溢出:堆要不断的创建对象,如果避免了垃圾回收来清除这些对象,就会产生JVM内存溢出.一般手段是通过内存映像分析工具对Dump出来的堆转储快照进行分析,分清楚到底是内存泄露还 ...

  7. python早期看书笔记

  8. Spring源码阅读笔记

    前言 作为一个Java开发者,工作了几年后,越发觉力有点不从心了,技术的世界实在是太过于辽阔了,接触的东西越多,越感到前所未有的恐慌. 每天捣鼓这个捣鼓那个,结果回过头来,才发现这个也不通,那个也不精 ...

  9. Spring 源码学习笔记10——Spring AOP

    Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...

随机推荐

  1. 在Unity中实现小地图(Minimap)

    小地图的基本概念众所周知,小地图(或雷达)是用于显示周围环境信息的.首先,小地图是以主角为中心的.其次,小地图上应该用图标来代替真实的人物模型,因为小地图通常很小,玩家可能无法看清真实的模型.大多数小 ...

  2. VS2017、VS2019没有Setup安装项目(Visual Studio Installer)_解决方案

    前言: VS2010中有一个自带的安装部署项目,叫:Visual Studio Installer ,我们通常称为:setup项目,是一个用于自定义安装部署的项目方案.但是在VS2017,VS2019 ...

  3. css公共库——简介中超过长度显示省略号

    在简介.引言中常见:文字只有一排,超出宽度以省略号显示,像这样 实现方法:在公共库定义otw类 .otw{ overflow: hidden; text-overflow: ellipsis; whi ...

  4. 我们是如何通过全球第一免费开源ERP Odoo做到项目100%交付

    传统友商ERP的交付过程 一.先初步需求调研,后选型功能模块 传统友商ERP第一件事情先对客户方进行初步的调研,客户方无论说什么,友商听过算过,只关心你人数多少,有哪些人涉及到哪些模块,接着对模块进行 ...

  5. Python之路【第四篇】:Python基础之函数

    函数的理解 面向过程:根据业务逻辑从上到下垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 函数作用是你的程序有良好的扩展性.复用性. 同样的功能要是用3次以上的话就建议使 ...

  6. 如何给Windows2016新建IIS并建立网站

    首先在菜单按钮旁右击-----点击Control Panel(控制面板) 点击Turn Windows features on or off 开始设置环境!!!!! 认真勾选参数!!! 然后点击安装! ...

  7. 解决 mac 10.14.4 无法 sublime text 3207 安装 Package Control,以及安装第三方包报错 `Package Control There are no packages available for installation`

    下载最新的 sublime text 3207,无法安装 Package Control. 根据官方提示,手动安装 Package Control. 手动安装 Package Control 后,无法 ...

  8. 你可能需要为你的 APP 适配 iOS 11

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/AZFrqL9dnlgA6Vt2sVhxIw 作者:s ...

  9. 单元测试过多,导致The configured user limit (128) on the number of inotify instances has been reached.

    最近在一个asp.net core web项目中使用TDD的方式开发,结果单元测试超过128个之后,在CI中报错了:"The configured user limit (128) on t ...

  10. [转载]PrintDocument,PrintDialog与PrintPreviewDialog用法总结

    一.使用PrintDocument进行打印 using System; using System.Drawing; using System.Drawing.Printing; using Syste ...