【来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论;

您的认可是我最大的动力,感谢您的支持】

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【从零开始学Spring Boot】:

http://412887952-qq-com.iteye.com/blog/2291500

(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:

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:

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文件:

<?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:

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:

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观察控制台输出可以看到:

HelloService2.HelloService2()

HelloService2.HelloService2()

HelloService2.HelloService2()

HelloService.HelloService()

org.kfit.service.HelloService.HelloService()

HelloService.HelloService()

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

(7)其它说明

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

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

"classpath:application-bean2.xml"

}

file路径:

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

Spring Boot 系列博客】

)前言【从零开始学Spring Boot】 :

http://412887952-qq-com.iteye.com/blog/2291496

)spring boot起步之Hello World【从零开始学Spring Boot】:

http://412887952-qq-com.iteye.com/blog/2291500

)Spring Boot返回json数据【从零开始学Spring Boot】

http://412887952-qq-com.iteye.com/blog/2291508

(15)Spring Boot使用Druid和监控配置【从零开始学Spring Boot】

http://412887952-qq-com.iteye.com/blog/2292362

)Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】

http://412887952-qq-com.iteye.com/blogs/2292376

)Spring Boot普通类调用bean【从零开始学Spring Boot】:

http://412887952-qq-com.iteye.com/blog/2292388

更多查看博客:http://412887952-qq-com.iteye.com/blog

(31)Spring Boot导入XML配置【从零开始学Spring Boot】的更多相关文章

  1. 59. Spring Boot Validator校验【从零开始学Spring Boot】

    大纲: (1) 入门例子: (2) 国际化: (3) 在代码中添加错误信息: (1) 入门例子: Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数 ...

  2. (6)Spring Boot datasource - mysql【从零开始学Spring Boot】

    在任何一个平台都逃离不了数据库的操作,那么在spring boot中怎么接入数据库呢? 很简单,我们需要在application.properties进行配置一下,application.proper ...

  3. (3)Spring Boot热部署【从零开始学Spring Boot】

    在编写代码的时候,你会发现我们只是简单把打印信息改变了下,就需要重新部署,如果是这样的编码方式,那么我们估计一天下来之后就真的是打几个Hello World之后就下班了.那么如何解决热部署的问题呢?那 ...

  4. 72.spring boot讨论群【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 如果您碰到什么问题,您可以加群进行探讨,在群里有加入的都是Spring Boot志同道合的朋友: Spring Boot QQ交流群:193341 ...

  5. (42)Spring Boot多数据源【从零开始学Spring Boot】

    我们在开发过程中可能需要用到多个数据源,我们有一个项目(MySQL)就是和别的项目(SQL Server)混合使用了.其中SQL Server是别的公司开发的,有些基本数据需要从他们平台进行调取,那么 ...

  6. (27)Spring Boot Junit单元测试【从零开始学Spring Boot】

    Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 那么先简单说一下为什么要写测试用例 1. 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率 ...

  7. 84. Spring Boot集成MongoDB【从零开始学Spring Boot】

    至于MongoDB网上有很多相关的资料,所以在这里不进行过多的介绍,我们在这里主要是介绍下如何将mongodb与spring boot结合使用.本节大纲: (1) 准备工作: (2) 新建一个mave ...

  8. 86. Spring Boot集成ActiveMQ【从零开始学Spring Boot】

    在Spring Boot中集成ActiveMQ相对还是比较简单的,都不需要安装什么服务,默认使用内存的activeMQ,当然配合ActiveMQ Server会更好.在这里我们简单介绍怎么使用,本节主 ...

  9. 85. Spring Boot集成RabbitMQ【从零开始学Spring Boot】

    这一节我们介绍下Spring Boot整合RabbitMQ,对于RabbitMQ这里不过多的介绍,大家可以参考网络上的资源进行安装配置,本节重点是告诉大家如何在Spring Boot中使用Rabbit ...

随机推荐

  1. ES transport client使用

    ES transport client bulk insert 传输(transport)客户端 TransportClient利用transport模块远程连接一个elasticsearch集群.它 ...

  2. treap平衡树

    今天集训讲平衡树,就瞎搞了一下.直接下代码. #include<iostream> #include<cstdio> #include<cmath> #includ ...

  3. C# Event.ClickCount 解决垃圾鼠标带来的烦恼

    今天调试遇到个Bug,百思不得其解的是在自己的设备上重来不重现,在测试机上百分百重现,如下: 问题:点击一次Button执行两次Click操作 分析:看Log的确是执行了两次,就像真的点击了两次But ...

  4. poj1958-汉诺四塔问题(三种方法)

    链接:http://poj.org/problem?id=1958 大意:汉诺塔升级版,四根柱子,n个盘子,求最少移动次数: 两种方法 递推or递归(当然还有思路3--打表) 思路1:递推(或者DP? ...

  5. android ui篇

    android ui篇主要做两件事情. 第一件事情就是能够自己去定义基本的简单的界面. 第二件事情就是能够使用开源library去构造一些复杂的界面. 第一件事情就需要对于布局等方面知识有着基本的掌握 ...

  6. Google的网站性能优化最佳实践

    网站性能最佳实践   当描述一个web页面的页面速度,评价的一致性遵循许多不同的规则.这些规则是任何阶段的web开发可以应用的前端最佳实践.这个文档的每个规则都陈述于此,无论你是否运行页面测速工具-- ...

  7. Android 应用安装成功之后删除apk文件

    问题: 在应用开发中遇到需要这样的需求:在用户下载我们的应用安装之后删除安装包. 解决: android会在每个外界操作APK的动作之后发出系统级别的广播,过滤器名称: android.intent. ...

  8. ArrayList<HashMap<String,Object>>集锦

    1.   Android中如何从一个Activity中ArrayList<HashMap<String,Object>>传递到另一个activity?      eg:     ...

  9. 努比亚 Z17 mini s (Nubia NX589J) 解锁BootLoader 并刷入recovery ROOT

    首先下载好工具链接:链接:https://pan.baidu.com/s/1gher4T9 密码:rypn 备用下载链接:https://pan.baidu.com/s/1nxdzt9Z 本篇教程教你 ...

  10. 课上练习 script

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...