博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(31)Spring Boot导入XML配置【从零开始学Spring Boot】
阅读量:5739 次
发布时间:2019-06-18

本文共 4212 字,大约阅读时间需要 14 分钟。

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

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

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

 

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有两种常用的引入方式:classpathfile,具体查看如下的例子:

 

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

"classpath:application-bean2.xml"

}

 file路径:

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

 

 

 

Spring Boot 系列博客】

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

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

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

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

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

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

 

更多查看博客:

 

转载于:https://www.cnblogs.com/hehehaha/p/6147112.html

你可能感兴趣的文章
Jenkins+Ansible+Gitlab自动化部署三剑客
查看>>
经典的软件开发哲学
查看>>
Session与Cookie
查看>>
hadoop2.6.0集群搭建
查看>>
wordpress 伪静态nginx设置
查看>>
Hive lateral view 和 explode 详解
查看>>
Spring 拦截器 学习
查看>>
Nginx Location配置总结
查看>>
nodejs 完成mqtt服务端
查看>>
在ASP.NET MVC 中获取当前URL、controller、action
查看>>
Spring IoC容器初的初始化过程
查看>>
ScrollView has ambiguous scrollable content height
查看>>
linux下启动mysql的命令
查看>>
Windows 2003 AD 单域环境的实现(多站点) 基本
查看>>
《JAVA编程思想》学习笔记——第十章 内部类
查看>>
第57课:Spark SQL on Hive配置及实战
查看>>
redis 问题
查看>>
冒泡排序法
查看>>
IOS 编译ffmpeg
查看>>
如何实现jqGrid数据导出
查看>>