spring boot导入xml配置

Spring Boot理念就是零配置编程,但是如果绝对需要使用XML的配置,我们建议您仍旧从一个@Configuration类开始,你可以使用@ImportResouce注解加载XML配置文件,我拿一个例子来进行讲解:

这个例子的大体步骤如下:

步骤 描述
1 新建一个工程;
2 在App.java类编写HelloService2;
3 在App.java类无法扫描的包下编写HelloService;
4 编写application-bean.xml注入HelloService;
5 编写ConfigClass注入配置文件application-bean.xml;
6 编写App.java启动类进行测试;
7 其它说明


1)新建一个工程;

  我们在前几节的例子已经写到hello2了,我们取一个新的名称为spring-boot-hello3,这里没有什么难点,不过多介绍,还有难处的可以查看之前的例子,当然这里加入spring-boot相应的web支持;

不懂的参考:

spring boot起步之Hello World


2)在App.java类编写HelloService2;

    首先我们这里有几个包:com.kfit,org.kfit,我们这里打算把App.java启动类放到com.kfit中,根据Spring Boot扫描(根包到子包的原则),我们把HelloService2写在Spring Boot可以扫描的位置,HelloService写在Spring Boot无法扫描到的位置,那么我们使用配置文件bean的方式进行引入,具体代码如下:

com.kfit.service.HelloService2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package  com.kfit.service;
  
import  org.springframework.stereotype.Service;
  
@Service
publicclass HelloService2 {
    
     /**
      * 启动的时候观察控制台是否打印此信息;
      */
     public  HelloService2() {
        System.out.println( "HelloService2.HelloService2()" );
        System.out.println( "HelloService2.HelloService2()" );
        System.out.println( "HelloService2.HelloService2()" );
     }
}


(3)在App.java类无法扫描的包下编写HelloService;

      注意这个类是写在Spring Boot无法自动扫描的位置,正常启动之后,如果引入HelloService的话肯定会报异常的,因为它根本没有被注入成功,具体代码如下:

 org.kfit.service.HelloService:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package  org.kfit.service;
  
import  org.springframework.stereotype.Service;
  
@Service
publicclass HelloService {
    
     /**
      * 启动的时候观察控制台是否打印此信息;
      */
     public  HelloService() {
        System.out.println( "HelloService.HelloService()" );
        System.out.println( "org.kfit.service.HelloService.HelloService()" );
        System.out.println( "HelloService.HelloService()" );
     }
    
}


(4)编写application-bean.xml注入HelloService;

  在src/main/resouces下编写配置文件application-bean.xml文件:

1
2
3
4
5
6
7
8
9
<? 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" >
    
     <!-- 注入spring boot无法扫描到的bean. -->
     < bean  id = "helloService"  class = "org.kfit.service.HelloService" ></ bean >
  
</ beans >


(5)编写ConfigClass注入配置文件application-bean.xml;

     在com.kfit.config包下编写类ConfigClass,这个确保能被Spring Boot可以扫描到,不然一切都付之东流了,具体代码如下:

com.kfit.config.ConfigClass:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package  com.kfit.config;
  
import  org.springframework.context.annotation.Configuration;
import  org.springframework.context.annotation.ImportResource;
  
/**
  * classpath路径:locations={"classpath:application-bean1.xml","classpath:application-bean2.xml"}
  * file路径: locations = {"file:d:/test/application-bean1.xml"};
  */
@Configuration
@ImportResource (locations={ "classpath:application-bean.xml" })
//@ImportResource(locations={"file:d:/test/application-bean1.xml"})
publicclass ConfigClass {
  
}


6)编写App.java启动类进行测试;

    这个类Spring Boot正常的启动代码:

com.kfit.App:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package  com.kfit;
  
import  org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;
  
/**
  *
  *
  * 大家也许会看到有些demo使用了3个注解: @Configuration;
  *
  * @EnableAutoConfiguration
  * @ComponentScan
  *
  *   其实:@SpringBootApplication申明让spring boot自动给程序进行必要的配置,
  *
  * 等价于以默认属性使用@Configuration,
  *  @EnableAutoConfiguration和@ComponentScan
  *
  * 所以大家不要被一些文档误导了,让自己很迷茫了,希望本文章对您有所启发;
  *
  * @author Angel(QQ:412887952)
  * @version v.0.1
  */
@SpringBootApplication
public  class  App {
        public  static  void  main(String[] args) {
               SpringApplication.run(App. class , args);
        }
}

在App.java 右键 Run As  Java Application观察控制台输出可以看到:

1
2
3
4
5
6
HelloService2.HelloService2()
HelloService2.HelloService2()
HelloService2.HelloService2()
HelloService.HelloService()
org.kfit.service.HelloService.HelloService()
HelloService.HelloService()

说明我们引入编写的代码生效了,如果你不相信的话,可以把ConfigClass的注解去掉,测试下,是不是打印信息就少了HelloService的部分,是的话就对了。


7)其它说明

ImportResouce有两种常用的引入方式:classpathfile,具体查看如下的例子:

classpath路径:

locations={"classpath:application-bean1.xml",

"classpath:application-bean2.xml"

}

 file路径:

locations = {"file:d:/test/application-bean1.xml"};

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值