SPRING管理XML方式过程解析

1.有三种实例化方式(无参构造,静态工厂,实例工厂),最常用的还是无参构造的方式

2.bean标签中常用的属性

id/name:唯一标识名称,两者作用一样,只是name中可以包含特殊字符

class:类的完全路径名

scope:bean的作用域 singleton :单例 (默认) prototype:每getBean创建一个新的 (常用) request session (不常用)

一般都默认为singleton ,当整合struts2时,它的action是多例的,它要交给spring去管理,所以用多例

init-method:当bean被载入容器中时调用

destroy-method:当bean从容器中删除时调用 (scope=prototype时有效)

(init-method和destroy-method在web容器中会自动调用,但是main函数或测试用例需要手动调用)

3.bean的生命周期

package com.pheony.demo2;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class Food implements BeanNameAware,ApplicationContextAware,InitializingBean,DisposableBean {

  public Food(){
    System.out.println("第一步,利用构造方法实例化啦");
  }

  private String name;    //食品名称
  public void setName(String name) {
    System.out.println("第二步,设置属性啦");
    this.name = name;
  }
  public String getName() {
    return name;
  }

  @Override
  public void setBeanName(String s) {
    System.out.println("第三步,设置bean的名称啦");
  }

  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    System.out.println("第四步,了解工厂信息啦");
  }

  @Override
  public void afterPropertiesSet() throws Exception {
    System.out.println("第六步,属性设置后啦");
  }

  public void setup(){
    System.out.println("第七步,初始化啦");
  }

  public void run(){
    System.out.println("第九步,执行自身业务方法啦");
  }

  @Override
  public void destroy() throws Exception {
    System.out.println("第十步,执行spring的销毁方法啦");
  }

  public void setdown(){
    System.out.println("第十一步,执行自身销毁方法啦");
  }

}
package com.pheony.demo2;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * 后处理bean,很关键,AOP就是利用这个实现的
 */
public class MyBeanPostProcessor implements BeanPostProcessor {
  @Override
  public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
    System.out.println("第五步,初始化前方法来啦");
    return o;
  }

  @Override
  public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
    System.out.println("第八步,初始化后方法来啦");
    return o;
  }
}
<bean id="food" class="com.pheony.demo2.Food" scope="singleton" init-method="setup" destroy-method="setdown">
    <!--在实体类中属性最好都加上set/get方法,DI根据set/get方法找到对应的属性-->
    <property name="name" value="香蕉"></property>
  </bean>
  <bean class="com.pheony.demo2.MyBeanPostProcessor"></bean>
package com.pheony.demo2;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestFood {

  @Test
  public void test1(){
    ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    Food food = (Food)ac.getBean("food");

    food.run();

    ac.close();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot通过yml和xml文件配置日志输出方法

    SpringBoot中默认使用Logback进行日志输出,可以同时使用SpringBoot框架的配置文件application.yml或是通过logback的配置文件logback.xml进行配置. 通过application.yml配置 <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 Lo

  • Spring Boot中扩展XML请求与响应的支持详解

    前言 在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一个对象呢? 什么是xml文件格式 我们要给对方传输一段数据,数据内容是"too young,too simple,sometimes naive",要将这段话按照属性拆分为三个数据的话,就是,年龄too young,阅历too simple,结果sometimes naive.

  • SpringBoot返回json和xml的示例代码

    有些情况接口需要返回的是xml数据,在springboot中并不需要每次都转换一下数据格式,只需做一些微调整即可. 新建一个springboot项目,加入依赖jackson-dataformat-xml,pom文件代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu

  • SpringBoot项目设置断点debug调试无效忽略web.xml问题的解决

    刚接触springboot项目, (1)发现断点debug调试无效,很郁闷,网上搜索解决办法. 看到的都是一些很复杂的方案,说是远程调试,还要另外开端口号.这和传统的项目不一样,因此觉得没必要. 所以经过摸索,发现有一种更加简单的方式,步骤如下: 在pom文件的plugin部分加上一段配置: <configuration> <fork>false</fork> </configuration> 这样就ok了: (2)关于SpringBoot项目中报错说web

  • 浅谈xml配置spring profiles的几个注意点

    先贴正确配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/

  • 详解springboot集成mybatis xml方式

    springboot集成mybatis 关键代码如下: 1,添加pom引用 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> &l

  • Spring如何在xml文件中配置Bean

    Spring容器是一个大工厂,负责创建.管理所有的Bean. Spring容器支持2种格式的配置文件:xml文件.properties文件,最常用的是xml文件. Bean在xml文件中的配置 <beans> 根元素,可包含多个<bean>元素,一个<bean>即一个Bean的配置. <bean> 一个<bean>即一个Bean对象.原来是new出来该类的一个对象,Spring中是一个<bean>创建一个对象. <bean na

  • SPRING管理XML方式过程解析

    1.有三种实例化方式(无参构造,静态工厂,实例工厂),最常用的还是无参构造的方式 2.bean标签中常用的属性 id/name:唯一标识名称,两者作用一样,只是name中可以包含特殊字符 class:类的完全路径名 scope:bean的作用域 singleton :单例 (默认) prototype:每getBean创建一个新的 (常用) request session (不常用) 一般都默认为singleton ,当整合struts2时,它的action是多例的,它要交给spring去管理,

  • SPRING IOC注入方式过程解析

    这篇文章主要介绍了SPRING IOC注入方式过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring IOC注入的方法主要有两种 1:设值注入 2:构造注入 简单来说一个是调用set方法设值,一个是通过构造函数设值 Spring-ioc.xml <?xml version= "1.0" encoding= "UTF-8"?> <beans xmlns= "http://ww

  • Spring整合MyBatis图示过程解析

    这篇文章主要介绍了Spring整合MyBatis图示过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入所需要的jar依赖 !--MyBatis和Spring的整合包 由MyBatis提供--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <vers

  • Spring Boot整合Spring Cache及Redis过程解析

    这篇文章主要介绍了Spring Boot整合Spring Cache及Redis过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.安装redis a.由于官方是没有Windows版的,所以我们需要下载微软开发的redis,网址: https://github.com/MicrosoftArchive/redis/releases b.解压后,在redis根目录打开cmd界面,输入:redis-server.exe redis.wind

  • Spring Bean实例化实现过程解析

    这篇文章主要介绍了Spring Bean实例化实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Bean的实例化 1.构造器实例化:Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean package com.itheima.instance.constructor; public class Bean1 { } <?xml version="1.0" encoding="UTF-8&quo

  • Spring Boot 整合 Druid过程解析

    这篇文章主要介绍了Spring Boot 整合 Druid过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概述 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 SQL 解析器组成.该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证.统计 SQL 信息.SQL 性能收集.SQL 注入检查.SQL 翻译等,程序员可以通过定制来实现自己需要的功能. Druid 是

  • Spring boot整合log4j2过程解析

    这篇文章主要介绍了Spring boot整合log4j2过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 以前整合过log4j2,但是今天再次整合发现都忘记了,而且也没有记下来 1.pom.xml中 (1)把spring-boot-starter-web包下面的spring-boot-starter-logging排除 <dependency> <groupId>org.springframework.boot</gr

  • Spring IOC xml方式进行工厂Bean操作详解

    spring中有两种Bean 第一种 普通 Bean 就是我们在配置文件中 定义的类对象 创建bean 并定义相关的id和声明类对象 普通bean的特点在于 在配置文件中定义的类型 也就是返回类型 就比如 你定义的是一个 book类的类型 那你这个bean返回的 也比如是个book类型的对象 第二种 是在工厂类中统一管理的工厂Bean 特点上 还是有比较大区别的 首先 工厂Bean 又叫FactoryBean 他定义的类型和返回类型是可以不一样的 通常作为一个工厂类 来管理bean对象操作 我们

  • spring boot整合kafka过程解析

    这篇文章主要介绍了spring boot整合kafka过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.启动kafka 启动kafka之前一定要启动zookeeper,因为要使用kafka必须要使用zookeeper. windows环境下启动,直接使用kafka自带的zookeeper: E:\kafka_2.12-2.4.0\bin\windows zookeeper-server-start.bat ..\..\config\z

  • 基于XML配置Spring的自动装配过程解析

    一.了解Spring自动装配的方式 采用传统的XML方式配置Bean组件的关键代码如下所示 <bean id="userMapper" class="edu.cn.dao.UserMapperImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <bean id="userSer

随机推荐