当前位置: 首页 > news >正文

wordpress站点浏览人流医院网站建设

wordpress站点浏览,人流医院网站建设,上海突然传来噩耗,刚开始做汽配网站要进货目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean#xff0c;而 Spring 中的…  目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean而 Spring 中的 Bean 指的是将对象的生命周期交个 Spring IoC 容器来管理的对象。所以 Spring 中的 Bean 对象在使用时无需通过 new 来创建对象只需要通过 DI依赖注入从 Spring 中取出要使用的对象即可。 Bean作为一个Java对象具有一定的生命周期。它的生命周期包括以下几个阶段 实例化在Java应用程序中Bean对象是通过new关键字或者反射机制来实例化的。在这个阶段Bean对象被创建并分配了内存空间。设置属性(Bean注入和装配)初始化当Bean对象被创建后需要进行初始化包括设置属性值、执行一些初始化操作等。在Spring框架中Bean的初始化可以通过配置文件中的init-method属性进行指定。使用在Bean初始化之后它就可以被应用程序使用了。在使用过程中Bean可能会调用其他对象的方法从而导致其他Bean对象被实例化和初始化。销毁当Bean对象不再被使用时应该将其销毁并释放占用的内存空间。在Spring框架中Bean的销毁可以通过配置文件中的destroy-method属性进行指定。 总的来说Bean对象的生命周期可以通过实例化、初始化、使用和销毁这几个阶段来描述。在Spring框架中Bean的生命周期还可以通过BeanPostProcessor接口来进行扩展和定制。 为了便于理解  我们引用一个现实中的事件来形容   Bean 的⽣命流程看似繁琐但咱们可以以⽣活中的场景来理解它⽐如我们现在需要买⼀栋房⼦那么我们的流程是这样的 1. 先买房实例化从⽆到有 2. 装修设置属性 3. 买家电如洗⾐机、冰箱、电视、空调等[各种]初始化 4. ⼊住使⽤ Bean 5. 卖出去Bean 销毁。  Bean的初始化 执行各种通知(BeanNameAware、BeanFactoryAware)等接口方法初始化的前置方法(PostConstruct)初始化方法初始化的后置方法(PreDestroy) 下面用代码演示整个Bean的生命周期: 我们用构造方式来展示实例化的效果 ,实例化和属性设置是 Java 级别的系统“事件”其操作过程不可⼈⼯⼲预和修改  所以下面没有演示设置属性 package com.example.bean.test;import org.springframework.beans.factory.BeanNameAware; import org.springframework.stereotype.Component;import javax.annotation.PostConstruct; import javax.annotation.PreDestroy;Component public class BeanLifeComponent implements BeanNameAware {private String name;public BeanLifeComponent() {System.out.println(实例化方法执行拉);}public void setBeanName(String s) {System.out.println(执行 BeanName 的通知方法);}PostConstructpublic void postConstruct() {System.out.println(初始化方法执行);}public void use() {System.out.println(使用 Bean);}PreDestroypublic void preDestroy() {System.out.println(销毁方法执行);} }因为初始化的前置方法和后置方法是为所有 Bean 服务的而非为某一个 Bean 服务的所以这两个方法不能写在某个具体的 Bean 中否则这两个方法不会执行。 所以我们另外创建一个类来实现这两个方法 package com.example.bean.test;import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.stereotype.Component;Component public class MyBeanPostProcessor implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals(beanLifeComponent)) {System.out.println(初始化前置方法执行);}return bean;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals(beanLifeComponent)) {System.out.println(初始化后置方法执行);}return bean;} }在得到上下文对象这里  因为我们是使用springboot演示的 所以我们使用ConfigurableApplicationContext 来得到上下文对象 package com.example.bean.test;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext;SpringBootApplication public class DemoApplication {public static void main(String[] args) {// 得到上下文对象并启动 Spring Boot 项目ConfigurableApplicationContext context SpringApplication.run(DemoApplication.class, args);// 获取 BeanBeanLifeComponent component context.getBean(BeanLifeComponent.class);// 使用 Beancomponent.use();// 停止 Spring Boot 项目context.close();} } 结果如下:  二、PostConstruct 和 PreDestroy 各自的效果 当Bean被容器初始化之后会调用PostConstruct的注解方法。当Bean在容器销毁之前调用被PreDestroy注解的方法 代码如下:所以PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源用PostConstruct 注释的方法也必须被调用。只有一个方法可以用此注释进行注释。 PostConstructpublic void doPostConstruct(){System.out.println(执行了 新版本PostConstruct 前置初始化方法);}PreDestroypublic void doPreDestroy(){System.out.println(执行新版本 PreDestroy 销毁方法);} PreDestroy 用与在依赖注入完成之前的方法前面执行遵守准则 该方法不得有任何参数该方法的返回类型必须为 void该方法不得抛出已检查异常应用 PostConstruct 的方法可以是 public、protected、package private 或 private该方法不能是 static该方法可以是 final该方法只会被执行一次 三、 实例化和初始化的区别 实例化和属性设置是 Java 级别的系统“事件”其操作过程不可⼈⼯⼲预和修改⽽初始化是给开发者提供的可以在实例化之后类加载完成之前进⾏⾃定义“事件”处理。 四、为什么要先设置属性在进⾏初始化呢 仔细观察下面代码: Servicepublic class UserService {public UserService(){System.out.println(调⽤ User Service 构造⽅法);}public void sayHi(){System.out.println(User Service SayHi.);}} Controllerpublic class UserController {Resourceprivate UserService userService;PostConstructpublic void postConstruct() {userService.sayHi();System.out.println(执⾏ User Controller 构造⽅法);}} 我们可以发现很是为了避免空指针异常。
http://www.hkea.cn/news/14510744/

相关文章:

  • html网站欣赏从0搭建一个网站
  • 广州模板建站平台wordpress模版侵权
  • 刷网站建设济南公司建设网站
  • 怎么做网站广告赚钱做网站设计要注意什么问题
  • 人社局网站群建设工作方案公司设计网站有什么好处
  • 开个网站卖机器怎么做系统开发需求
  • 健身房网站建设案例网站建设英文方案
  • 广州皮具网站建设市场营销策略国内外研究现状
  • 网站域名如何更换展示型装饰网站模板
  • 温州做网站建设哪家好做公众号网站
  • 常州网站建设运营WordPress访问mysql慢
  • 网站布局策划网站怎么企业备案信息查询
  • 群晖wordpress站点地址拼多多一键铺货软件
  • 代码网站开发网站开发员招聘
  • wap卖料建站系统中山网站建设公司哪个好
  • 长春网站建设吉网传媒实力牜广告营销是做什么的
  • 文登城乡建设局网站10月上海娱乐场所又要关门了
  • wordpress 页面 列表seo排名优化哪里好
  • 营销者网站wordpress升级缓存
  • 没有网站可以做app吗百度快速排名提升
  • 给企业做网站公司wordpress粉丝
  • 怎样注册网站帐号申请网站流量所需的成本.
  • 手机做任务网站有哪些内容广州seo工资
  • 口碑好的网站定制公司旅游网站建设开题报告
  • 青岛网站制作机构建立自己的购物网站
  • 哪个网站可以做创意短视频网站企业展厅建设
  • 佛山企业快速建站长春集团网站建设
  • 国家拨款农村建设查询的网站长安企业建站
  • 招聘网站上还要另外做简历吗无锡网络营销推广公司
  • 建行互联网站郑州最好的网站建设