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

广东企业网站建设策划常州免费网站建站模板

广东企业网站建设策划,常州免费网站建站模板,日本软银集团股东有谁,网站建设执招标评分表目录 一、加载spring配置文件的几种方式。 (0)工程文件初始化。 (1)加载类路径下的配置文件。(常见) (2)加载文件绝对路径的配置文件。 (3)加载多个配置文件。…

目录

一、加载spring配置文件的几种方式。

(0)工程文件初始化。

(1)加载类路径下的配置文件。(常见)

(2)加载文件绝对路径的配置文件。

(3)加载多个配置文件。

二、获取bean的方式。

(1)容器对象.getBean("id")+强制类型转换。

(2)容器对象.getBean("id","bean类型")。

(3)容器对象.getBean("bean类型")。

三、spring容器初始化方式。

(1)BeanFactory接口。

<1>第一种方案。

<2>第二种方案。

(2)ApplicationContext接口。

(3)BeanFactory(Bean工厂)与ApplicationContext接口核心区别。

<1>BeanFactory延迟加载bean。

<2>ApplicationContext即时加载bean。

(4)关闭容器的接口。

<1>ConfigurableApplicationContext接口。


一、加载spring配置文件的几种方式。

(0)工程文件初始化。
  • 基于Maven构建工程。引入spring-context依赖坐标。
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version>
</dependency>

  • dao层。BookDao接口。BookDaoImpl实现类。

package com.fs.dao;public interface BookDao {/*** dao层save方法*/void save();
}
package com.fs.dao.impl;import com.fs.dao.BookDao;public class BookDaoImpl implements BookDao {@Overridepublic void save() {System.out.println("book dao save...");}
}

  • resources目录下的spring配置文件。将BookDaoImpl交给spring容器管理。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookDao" class="com.fs.dao.impl.BookDaoImpl"></bean></beans>

  • 测试类(App)。通过获取容器对象得到对应管理的bean。通过对象调用save方法完成测试。


(1)加载类路径下的配置文件。(常见)
  • 使用类路径加载配置文件。new ClassPathXmlApplicationContext(xxx)。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//1.使用类路径加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao = (BookDao) context.getBean("bookDao");bookDao.save();}
}

  • 运行结果。


(2)加载文件绝对路径的配置文件。
  • 使用文件系统加载配置文件。new FileSystemXmlApplicationContext(xxx)。
  • 复制文件的引用(绝对路径)。


package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.FileSystemXmlApplicationContext;public class App {public static void main(String[] args) {//2.使用文件系统加载配置文件FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("D:\\javacode2025\\spring-0219\\src\\main\\resources\\applicationContext.xml");BookDao bookDao = (BookDao) context.getBean("bookDao");bookDao.save();}
}
  • 运行结果也是如第1种方式一样。不过通常大多数都是使用类路径加载配置文件。

(3)加载多个配置文件。
  • 无论是哪种方式,都可以一次加载多个配置文件,配置文件之间使用逗号相隔即可。
 //使用类路径加载多个配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");

二、获取bean的方式。

(1)容器对象.getBean("id")+强制类型转换。
  • 简单理解:使用bean名称(id)获取。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//使用类路径加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao = (BookDao) context.getBean("bookDao");bookDao.save();}
}

(2)容器对象.getBean("id","bean类型")。
  • 简单理解:使用bean名称(id)并指定类型获取。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//使用类路径加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao = context.getBean("bookDao", BookDao.class);bookDao.save();}
}

(3)容器对象.getBean("bean类型")。
  • 简单理解:使用bean类型获取。
  • 局限性。容器内部管理的某个类型的实体类的bean只能有一个。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//使用类路径加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao = context.getBean(BookDao.class);bookDao.save();}
}

三、spring容器初始化方式。

(1)BeanFactory接口。
  • BeanFactory是IoC容器的顶层接口。初始化BeanFactory对象时,加载的bean延迟加载。


  • 当然使用BeanFactory接口也可以完成IoC容器对象的实例化。因为是spring最早期的实例化容器的方案。

<1>第一种方案。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;public class AppForBeanFactory {public static void main(String[] args) {Resource resource = new ClassPathResource("applicationContext.xml");BeanFactory beanFactory = new XmlBeanFactory(resource);BookDao bookDao = beanFactory.getBean(BookDao.class);bookDao.save();}
}
<2>第二种方案。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;public class AppForBeanFactory2 {public static void main(String[] args) {//创建bean工厂对象DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();//创建一个读取spring配置文件的对象XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);//加载spring配置文件并交给bean工厂xmlBeanDefinitionReader.loadBeanDefinitions("applicationContext.xml");BookDao bookDao = beanFactory.getBean(BookDao.class);bookDao.save();}
}
(2)ApplicationContext接口。
  • ApplicationContext是spring容器的核心接口,初始化bean是即时加载。
  • 可以通过类与接口间的层次结构向上寻找。其中ClassPathXmlApplicationContext、FileSystemXmlApplicationContext类是ApplicationContext接口常用初始化类。
  • 而ApplicationContext接口是后期在BeanFactory接口的基础上发展而来的。并通过若干个子接口、实现类的扩张,达到了最佳的使用状态。也就是现在ApplicationContext接口提供的功能要比BeanFactory接口要多得多。


(3)BeanFactory(Bean工厂)与ApplicationContext接口核心区别。
  • BeanFactory创建bean对象的时机是当调用getBean()方法时才创建延迟加载)。

  • 而ApplicationContext一创建对象就把bean对象创建好了即时加载


<1>BeanFactory延迟加载bean。
  • 1、在BookDaoImpl实现类新增无参构造方法。并打印一句话。
  • 2、测试类中从调用getBean()方法往下注释。
package com.fs.dao.impl;import com.fs.dao.BookDao;public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("book dao constructor...");}@Overridepublic void save() {System.out.println("book dao save...");}
}
  • 测试类AppForBeanFactory。

package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;public class AppForBeanFactory {public static void main(String[] args) {Resource resource = new ClassPathResource("applicationContext.xml");BeanFactory beanFactory = new XmlBeanFactory(resource);/*BookDao bookDao = beanFactory.getBean(BookDao.class);bookDao.save();*/}
}
  • 结果发现并没有调用无参构造,未完成bean的初始化。(延迟加载bean)

<2>ApplicationContext即时加载bean。
  • 而ApplicationContext在创建容器对象的时候就完成了bean的初始化。
package com.fs.test;import com.fs.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//使用类路径加载多个配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");/*BookDao bookDao = context.getBean(BookDao.class);bookDao.save();*/}
}
  • 测试结果也就是打印了无参构造的输出。


  • 也可以在spring配置文件中的属性lazy-init="true"(设置延迟加载)。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookDao" class="com.fs.dao.impl.BookDaoImpl" lazy-init="true"></bean></beans>

(4)关闭容器的接口。
<1>ConfigurableApplicationContext接口。
  • 涉及到bean的生命周期与控制——close()方法。
  • 具体可以查看之前的博客:spring学习(bean的生命周期与控制?)_spring 控制bean 生命周期-CSDN博客

http://www.dtcms.com/wzjs/350227.html

相关文章:

  • 类似淘宝的网站怎么做seo是做什么工作内容
  • 简单的静态网站营销软文范文200字
  • 免费网站建设靠谱嘛最佳磁力吧ciliba磁力链
  • 天津企业网站制作广东seo快速排名
  • 口碑好的丹阳网站建设优化排名 生客seo
  • 怎么查看什么公司做的网站吗网上营销怎么做
  • 家装设计能自学吗辽阳网站seo
  • 南通企业网站公司怎么建立自己的网站
  • 外贸邮箱用哪个比较好seo自动刷外链工具
  • 和创客贴类似的网站信息流广告素材网站
  • 手机网站分辨率做多大网站设计培训
  • 网站 意义网络优化培训
  • 上海市工程信息网站广东seo点击排名软件哪家好
  • 济宁祥云网站建设百度快照官网
  • 宁波seo关键词引流seo推广优化方案
  • 给学校做网站电商网站建设 网站定制开发
  • 最新网站建设中国进入全国紧急状态
  • 万网注册的域名怎么建设网站网络推广都有哪些平台
  • qq技术教程wordpressseo兼职论坛
  • 苍山县建设银行网站淘宝的17种免费推广方法
  • 网站自适应手机端搜索引擎营销的主要方式有
  • 怎样用jsp做网站 新手教程不限次数观看视频的app
  • 做网站空间百度云和阿里云区别成都网站建设方案托管
  • 做网站的书籍深圳网络推广seo软件
  • 如何用本机电脑做网站服务器吗网页设计培训
  • 无锡网站制作咨询浏览广告赚钱的平台
  • 杭州做网站公司百家港 seo服务
  • 网站安全代维厦门人才网唯一官方网站
  • 阿里云如何建立网站免费检测网站seo
  • 手机网站布局技术微信运营方案