[spring学习1] IoC容器
2020-12-13 16:30
标签:pos vat 事件 效果 一个 mes 自动 gap pack 一般java程序会有很多个类,类的声明赋值等都需要自己手动操作,比较繁琐。 很多类,我们常重复使用到,但初始化并赋值等操作都是重复的,在业务代码中还要想办法去找个地方去做它。 通过spring框架,配置好的bean,ioc容器会自动帮你 bean就是普通的java类,由成员变量和其对应的setter和getter方法组成。 大概流程就是,bean的实例化,赋值,(传入实例到容器),(调用自定义方法),使用,容器关闭,(调用自定义销毁方法)。 括号中的是需要bean实现对应接口后,可以实现附加的操作。 可以在配置文件中设置bean的 可选值: bean可以指定 尽管在java文件中没有继承,但可在配置文件中实现继承效果,子类可以或其父类的成员。但子类需要有父类的哪个成员。 Bean通过继承 spring容器负责创建对象,装配它们,配置它们,管理它们的整个生命周期。 spring自带了多个容器的实现,分为2类。 BeanFactory需要借助其它对象找到 spring有多种类型的应用上下文,如: 示例的这几个应用上下文,应在App中使用,而非web中。 [spring学习1] IoC容器 标签:pos vat 事件 效果 一个 mes 自动 gap pack 原文地址:https://www.cnblogs.com/maplesnow/p/11620259.html简介
Bean
是一个规范,它也是一个普通的java类,人们希望像写出的程序松耦合,每个类实现自己的功能即可,Bean就类似于一个一个的零件,程序由许多的Bean拼装而成。new
出来,并赋好值,自动管理bean的生命周期。我们仅仅只在需要使用的地方声明,ioc容器会自动帮你把一切的配置都做好。Bean
创建Bean
package com.yww;
public class Message {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = "this mssage is : " + msg;
}
}
Bean 生命周期
实例化 -> 填充属性 -> 调用BeanNameAware的setBean()方法 -> 调用BeanFactoryAware的setBeanFactory()方法 -> 调用ApplicationContextAware的setApplication()方法 ->
调用BeanPostProcessor的预初始化方法 -> 调用InitializingBean的afterPropertiesSet()方法 ->
调用自定义的初始化方法 ->
调用BeanPostProcessor的初始化方法 ->
使用Bean ->
(容器关闭)
调用DisposableBean的destroy()方法 ->
调用自定义的销毁方法
Bean 作用域
scope
作用范围。singleton
(单例),prototype
(每次都新建),request
(每次全球都新建),session
(每个会话共享),global-session(用于Protlet).Bean 定义继承
parent
指定另一个bean的id
后,使其继承。Bean PostProcessor
BeanPostProcessor
接口,可以让我们在Bean的初始化和销毁时做一些自定义的操作。IoC容器
org.springframework.beans.factory.beanFactory
)是最简单的容器,提供最基本的DI支持。org.springframework.context.ApplicationContext
)基于BeanFactory创建,提供应用框架级别的服务。(如从属性文件解析文本信息以及发布应用事件给感兴趣的事件监听器)Spring BeanFactory容器
.xml
文件。// ...
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
Message msg = (Message)factory.getBean("messge1");
// ...
ClassPath
是src/
路径下。Spring ApplicationContext容器
// ...
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
ApplicationContext context = new FileSystemXmlApplicationContext("/home/yww/beans.xml");
ApplicationContext context = new AnnotationConfigApplicationContext(MessageConfig.class);
Message msg = (Message)context.getBean("messge1");
// ...
AnnotationConfigWebApplicationContext
可以配置在web.xml
的
中,让ContextLoaderListener
使用AnnotationConfigWebApplicationContext
代替XmlWebApplicationContext
。
上一篇:C# 递归读取XML菜单数据
下一篇:winform实现截图