第三章 Spring的心脏之二

简介:
      注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。

以下部分是第三章余下的.
   接下来我们要讲一下几种初始化,加载配置文件的方法。此过程其实就是我们要讲的Spring的心脏。为什么叫它心脏呢?因为它是Spring的控制反转的容器。加载是有谁来加载的呢?

其实是容器加载,配置文件中描述了我们要用到的bean也就是类之间的调用关系。就是这个配置文件告诉容器应该如何组装它们之间的依赖,调用关系,它只起到了描述的用作,而真正的管理工作是由容器来管理。我们前面说过,容器就是可以实例化的BeanFactory的类。它又有很多实现。现在让我们看看它有几种实现。BeanFactory是一个接口。

我们经常用的就是扩展它的接口ApplicationContext.而它的实现又有多种,我们只介绍一些常用的实现。applicationContext.xml文件是位于Src目录下。

第一种就是:         ApplicationContext context = new ClassPathXmlApplicationContext(

                                     "applicationContext.xml");

第二种就是:         ApplicationContext context = new FileSystemXmlApplicationContext(

                                     "Src/ applicationContext.xml ");

注意上面两种加载是的路径。

然后在把他们转换成BeanFactory就可以了。需要用到那个bean就用getBean(“”)取得,可以根据idname都可以。

除此之外还有两种加载的方法:

第三种方法:ClassPathResource resource =  new  ClassPathResource( "applicationContext.xml" );

BeanFactory factory =  new  XmlBeanFactory(resource);

第四种方法:Resource resource =  new  FileSystemResource( "Src/applicationContext.xml" );

BeanFactory factory =  new  XmlBeanFactory(resource);

同样要注意上面的路径的不同。其实classpath相对应的路径就是Src目录下,而fileSystem相对的是工程目录。所以它们路径是有区别的,加载时也要细心,不然就会报 java.io.FileNotFoundException( 系统找不到指定的文件 ) 的异常了。

上面一些加载的方法都是存在main()方法时用的,如果在web里面。加载的方法也不同了。

在这里我也简单的说一下在和不同的框架应用时,所用的加载方法也不同。

web项目中applicationContext.xml可能不止一个,但初始化的方法是一样的。

首先在和struts联合使用时。可以在struts-config.xml中初始化,也可以在web.xml中初始化。

(1)        struts-config.xml中初始化。需要用到struts中的一个插件来完成。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

       <plug-in

                className="org.springframework.web.struts.ContextLoaderPlugIn">

                <set-property property="contextConfigLocation"

                          value="/WEB-INF/applicationContext.xml" />

           </plug-in>

</struts-config>

(2)        web.xml中初始化又有两种方法。

1种如下:

<web-app>

   <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/applicationContext-*.xml</param-value>

   </context-param>

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

 </listener>

</web-app>

2种如下:

<web-app>

<context-param>

 <param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContext-*.xml</param-value>

</context-param>

<servlet>

<servlet-name>SpringContextServlet</servlet-name>

      <servlet-class>

org.springframework.web.context.ContextLoaderServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

 </servlet>

</web-app>

我就在web.xml中的两种方法在说明一下。如果配置文件的名字是applicationContext.xml且放在web-INF下面,只需要<listener></listener><servlet></servlet>就可以了。在web.xml加载时它会自动在WEB-INF下面找名为applicationContext.xml的配置文件。前提一定要保证位置和名字正确。

接下来让我们总结一下这一章主要讲了什么。一句话,主要讲了一些可以实例化BeanFactory的类,它们就充当着Spring的容器,不知你还迷茫吗?

说白了,我们把实现BeanFactory接口的类看做是Spring的控制反转的容器。来容纳那些需要管理的bean()。让容器这个大管家来操作它们之间的调用关系吧!!!









本文转自 weijie@java 51CTO博客,原文链接:http://blog.51cto.com/weijie/66459,如需转载请自行联系原作者
目录
相关文章
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
|
XML Java 数据格式
|
9月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1328 0
|
10月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1146 0
|
6月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
567 4
|
6月前
|
Java 测试技术 数据库连接
【SpringBoot(四)】还不懂文件上传?JUnit使用?本文带你了解SpringBoot的文件上传、异常处理、组件注入等知识!并且带你领悟JUnit单元测试的使用!
Spring专栏第四章,本文带你上手 SpringBoot 的文件上传、异常处理、组件注入等功能 并且为你演示Junit5的基础上手体验
1089 5
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
521 0
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
890 0
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
329 0
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
1364 0