spring学习总结(一)
来源:互联网 发布:四川广电网络在线直播 编辑:程序博客网 时间:2024/05/17 06:37
第一讲 Spring基本用法
一、spring入门
1、设值注入
- IOC容器通过成员变量的setter方法来注入依赖的对象。
- 在依赖的对象中要有setter方法。
- Xml中配置:
- 如果A依赖于对象B,B的配置:
<bean id=”B” class=”cc.wsyw126.service.imp.B”/>
- A的配置:
<bean id=”A” class=”cc.wsyw126.service.imp.A”/><property name=”变量名” ref=”B”/></bean>
- Id:指定该Bean的唯一标示
- class:指定该Bean的实现类,此处不可用接口类,必须用实现类。
2、构造器注入
- 如果A依赖于对象B,B的配置:
- 在构造实例时,完成依赖关系的初始化。
- 要有参数为依赖对象B的构造器。
- XML配置:
- A的配置:
<bean id=”A” class=”cc.wsyw126.service.imp.A”/><constructor-arg ref=”B”/></bean>
- B的配置同设值注入
- A的配置:
二、Spring容器
- spring容器最基本的接口时BeanFactory,它有一个子接口ApplicationContext。
- ApplicationContext的实现类有:FIleSystemXmlApplicationContext,ClassPathXmlApplicationContext,AnnotationConfigApplicationContext。在web应用中经常使用xml和annotation这两个ApplicationContext。
- 使用BeanFactory创建BeanFactory的实例。
//搜索类加载器路径下的beans.xml文件创建Resource对象Resource isr = new ClassPathResource(“beans.xml”);
//搜索文件系统的当前路径下的beans.xml文件创建Resource对象Resource isr = new FileSystemResource(“beans.xml”);
- a和b任选其一,后跟下面的代码
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);
- 如果有多个配置文件,那么使用ApplicationContext创建BeanFactory的实例。
ApplicationContext appcontext = new ClassPathXmlApplicationContext(“beans.xml”,”service.xml”);
ApplicationContext appcontext = new FIleSystemXmlApplicationContext(“beans.xml”,”service.xml”);
- 类加载器目录:指的就是src目录。
三、让Bean获取它所在的Spring容器
- 可以让它实现BeanFactoryAware接口,在该接口中有一个方法:
setBeanFactory(BeanFactory beanFactory)
,这个参数指向创建它的BeanFactory。 - 实现ApplicationContextAware接口,在该接口中有一个方法:
setApplicationContext(ApplicationContext ctx)
,这个参数指向创建它的BeanFactory。 - 在国际化的时候,需要用ctx,所以这时候就需要获得ctx,就用这种方法。
四、Spring容器中的bean
- Bean的定义
- default-lazy-init:指定该元素下配置的所有bean默认的延迟初始化行为。
- default-merge:指定该元素下配置的所有bean默认的merge行为。
- default-autowire:指定该元素下配置的所有bean默认的自动装配行为。
- default-autowire-candidates:指定该元素下配置的所有bean默认是否作为自动装配的候选bean。
- default-init-method:指定该元素下配置的所有bean默认的初始化方法。
- default-destroy-method:指定该元素下配置的所有bean默认的回收方法。
- 上述的定义均可在每个子元素中指定——属性名去掉default即可。
- 区别:只对特定的bean有作用。对所有的bean有作用。
- 当两个定义不一致时,子元素的属性会覆盖的属性。
- Bean 的作用域
- Singleton:单例模式,在整个spring容器中,singleton作用域的bean将只生成一个实例。
- Prototype:每次通过容器的getBean()方法获取prototype作用域的bean时,都将产生一个新的bean实例。
- Request:对于一次HTTP请求,request作用域的bean将只生成一个实例。在同一次HTTP请求中,得到的bean都是一个。
- Session:对于一次HTTP请求,session作用域的bean将只生成一个实例。在同一次HTTP会话中,得到的bean都是一个。
- Global session:每个全局的HTTP session对应的一个bean实例。在典型的情况下,仅在使用portlet context的时候有效。
- Bean默认的作用域是:singleton。使用
<bean... scope=”prototype”/>
进行配置。
五、使用自动装配注入合作者的bean
- Spring的自动装配可以通过元素的default-autowire属性指定,该属性对配置文件中所有的bean起作用。
- 通过元素的autowire属性指定,该属性只对该bean起作用。
- 两种方式中属性可以接受的值:
- no:不使用自动装配。需通过ref元素指定。
- byName:根据setter方法名进行自动装配。
- byType:根据setter方法的形参类型进行自动装配。
- 个人觉得基于面向接口编程的思想下,使用byName不如使用byType,然后用ref指定装配的类型(或者用注释指明)
- 通过元素中指定default-autowire-candidates属性将一批bean排除在自动装配之外。该属性允许使用模式字符串。
- 注入嵌套bean:某个bean所依赖的bean不想被spring容器直接访问,则可以使用嵌套bean。
- 配置xml
- 形参类型是基本类型、String、日期等,直接使用value指定字面值即可。
- 形参类型是复合类,那就需要传入一个java对象作为实参。方法有二:
- 使用ref引用一个容器中已配置的bean。
- 使用元素配置一个嵌套bean。
- 注入的是集合类型:
- List和数组配置一样
- 小学
- Map
<entry key="语文" value="82"/>
< entry key="原始社会" value-ref="stoneAxe"/>
- Set
- 对于list、set、map等元素配置集合类型的参数值,还可以继续配置集合元素。故可以接受下面的子元素:
- value:执行集合元素是基本数据类型或字符串类型的值。
- ref:指定集合元素是容器中的另一个bean实例。
- bean:指定集合元素是一个嵌套bean。
- list、set、map:指定集合元素又是集合。
- List和数组配置一样
六、spring配置数据源
- 有三种方式(dbcp,c3p0,jndi)
七、抽象bean和子bean
- 把多个配置中相同的信息提取出来,集中成模板,需要为该bean添加属性:abstract=”true”。
- 通过为子bean指定parent属性就可以指定该bean是一个子bean,parent属性指定该bean所继承的父bean的id。
八、强制初始化bean
- 指定属性depends-on=””
九、容器中bean的声明周期
- 依赖关系注入之后的行为:
- 使用init-method属性。配置xml中指定init-method,在类中添加方法init()。
- 实现InitializingBean接口。实现方法:afterPropertiesSet()。
- Bean销毁之前的行为:
- 使用destroy-method属性。配置init-method,在类中添加方法close()。。
- 实现DisposableBean接口。实现方法:destroy()。
- 创建实例->注入依赖关系->调用afterPropertiesSet->调用init-method方法->对外提供服务->调用destroy->调用destroy-method方法。
0 0
- spring学习总结(一)
- Spring Security学习总结一
- Spring MVC学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring Security学习总结一
- Spring学习总结(一)
- Spring学习总结笔记一
- spring学习总结(一)
- spring学习总结(一)
- spring学习总结(三)---Spring基础知识(一)
- Spring学习总结(一).初探Spring
- Spring Security学习总结一(转)
- 四,Shiro核心(2)
- android中实现程序多入口的几种方法
- DB backup
- fragment横竖屏切换时生命周期的变化
- OK6410安装Debian
- spring学习总结(一)
- 哈理工OJ 1341 Who will be punished(字符操作,找只出现一次的字符串是哪个)
- spring中bean的基本xml配置
- 《AngularJS》5个实例详解Directive(指令)机制
- Android登录界面如何实现PC版腾讯QQ的“空值判断提醒小窗”效果
- TabLayout的使用及详解
- Glide的使用(超级详细)
- Nginx 安全加固心得
- 集成学习理论(sklearn)