专栏首页步履前行Spring学习-第一篇:关于读取配置文件

Spring学习-第一篇:关于读取配置文件

  最近在用Spring大法的框架,便利了我们,但是对于内部完全不知,虽然满足正常业务需求,但是一旦出现问题,解决效率太低,所以准备深入学习一下,准备个一系列,有不对的地方希望大家多多提建议!

  #读取配置,从applicationContext.xml谈起

  spring如果脱离了注解,开发效率肯定下降一大步,但是我们为了学习内部,就慢慢来了。


  开发工具用IDEA,用spring官方初始化模板,建的一个spring boot项目,(项目类型无关紧要,我们要学的是根本,其实是懒),一般Java spring项目都是在WEB-INF目录下,不过这个项目不同,大家可以稍微注意下,resources放配置文件,

public class Monkey {

    private String monkeyName = "MonkeyKing";

    public String toString(){
        return "MonkeyName:" + monkeyName;
    }
}
public class Tiger {

    private String tigerName="TigerKing";

    public String toString(){
        return "TigerName:"+tigerName;
    }
}
public class Zoo {

    private Tiger tiger;
    private Monkey monkey;


    public String toString(){
        return tiger + "\n" + monkey;
    }
}

applicationContext.xml 位于resources目录下

<?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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    ">

    <bean id="zoo" class="com.example.Zoo" >
        <property name="tiger" ref="tiger" ></property>
        <property name="monkey" ref="monkey" ></property>
    </bean>
    <bean id="tiger" class="com.example.Tiger" />
    <bean id="monkey" class="com.example.Monkey" />
</beans>

测试类:

public class MainTest {

    /**
     * 不使用注解
     */
    @Test
    public void test(){
        //读取配置文件  
        ApplicationContext ctx =
                new FileSystemXmlApplicationContext("src/main/resources/applicationContext.xml");
        Zoo zoo = (Zoo) ctx.getBean("zoo");
        System.out.println(zoo.toString());
    }
}

  大家注意,我用的是 FileSystemXmlApplicationContext 来加载配置文件

  还可以用  ClassPathXmlApplicationContext

  ApplicationContext ctx =
          new ClassPathXmlApplicationContext("applicationContext.xml");
  注意 FileSystemXmlApplicationContext引用的是具体文件系统的文件路径,而ClassPathXmlApplicationContext
在classpath找到xml文件
  这其中有个关键点:classpath
我们先看下这个路径
  String s[] = System.getProperty("java.class.path").split(";");
        for (String string : s) {
            System.out.println(string);
        }

 可以获取到当前项目工作目录:D:\gitwork\SpringTest\target\classes

所以,可以看到,我们的classpath是在build目录下:

因为我是springboot项目,所以resources目录独立出来了,普通Java项目会在WEB-INFO/classes下。
   @Test
    public void test(){
        //读取配置文件
        ApplicationContext ctx =
                new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Zoo zoo = (Zoo) ctx.getBean("zoo");
        System.out.println(zoo.toString());


    }

这样 我们就能读取 applicationContext.xml文件了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Java】基础篇-LinkedList

    说到 LinkedList,那么我们大家的第一想法就是 链表,是插入删除快,随机访问慢,今天我们就来一探究竟,究竟内部的它是什么构造导致的问题,我们是否可以在使...

    haoming1100
  • Java多线程--对象的可见性

      最近在看《Java并发编程实战》,并发方面的知识,今天看到了对象的可见性,在这里分享一下。

    haoming1100
  • Java 基础 -- 基础字符 char

    char 在 Java 中是个很底层的东西了,比如 String 、StringBuilder 的底层就是它,但是在我们平时的工作中呢,很少使用他,不过既然是底...

    haoming1100
  • Spring事务控制基于AOP 纯注解配置和XML配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 好好编程-物流项目05【Dao层整合】

      spring和mybatis的整合我们有两个配置文件要添加,分别是spring的配置文件和mybatis的配置文件。但是这两个配置文件放在哪儿呢?因为log...

    用户4919348
  • Spring-IOC实现【02-其他实现方式】

    SpringBoot流行之后,Java 配置开始被广泛使用。 Java配置本质上,就是使用一个Java类去代替xml配置,这种配置方式在SpringBoot中...

    用户4919348
  • Java单体应用 - 常用框架 - 07.Spring MVC - 项目重构(iot-admin3)

    原文地址:http://www.work100.net/training/monolithic-frameworks-spring-mvc-iot-admin3...

    光束云
  • Spring Boot笔记

    –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_112”

    瑞新
  • C++继承

    class A中有x ;class B集成A,同时也有x。则b.x访问的是B中的x。如果要访问A中的x,则用b.A::x。

    用户2929716
  • WCF入门(10)

    公司是做乙方的,工资还凑合,主要是项目基本都已完成,进去就是干维护,体会不到那种从头彻尾的成就感。项目中具体用了EF+Ado.net+WCF+WPF+(VB.n...

    _淡定_

扫码关注云+社区

领取腾讯云代金券