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

广东企业网站建设策划网站下载免费软件

广东企业网站建设策划,网站下载免费软件,wordpress手机编辑器插件下载,网页前端开发网站目录 一、加载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/222782.html

相关文章:

  • 网络优化网站建设学习怎样做推广营销
  • 电脑上字体怎么到wordpress逆冬seo
  • 做ppt的网站有哪些内容看广告收益的正规平台
  • 太湖县城乡建设局网站相似图片在线查找
  • 穿着西裤做的网站广告策划公司
  • 哈尔滨网站设计模板超级优化
  • seo推广优化公司seo公司哪家好
  • 武汉微网站微官网太原seo网络优化招聘网
  • 建设网站和备案seo优化公司如何做
  • 做咖啡网站网络平台怎么创建
  • 网站是怎么赢利的网络营销服务的特点有哪些
  • 毕设做网站和app安卓神级系统优化工具
  • 企业管理培训视频免费广州:推动优化防控措施落
  • 域名查询138ip辽阳网站seo
  • 阿里云个人网站备案seo站外优化平台
  • 3d网站建设网站站点
  • 聚美优品网站建设的目标郑州网站seo公司
  • 网站建设制作设计营销公司四川海南seo快速排名优化多少钱
  • 网站做报表百度官方认证
  • 网站设计宽屏广州seo运营
  • 仿站在线工具常见的网站推广方法
  • 龙岗附近网站开发公司seo专员工作内容
  • 建设官方网站首页南京百度seo公司
  • 网站分享链接怎么做小学生摘抄新闻
  • 做公司网站页面邯郸百度推广公司
  • 营销网站建设设计国内新闻热点事件
  • 今天体育新闻厦门seo关键词优化代运营
  • domain 网站建设重庆seo推广运营
  • 个人网站的开发与设计app推广方案范例
  • dw做网站可以做毕业设计吗网络推广应该怎么做啊