在使用spring 进行开发配置的时候有两类选择 *.xml 配置文件、配置的Bean( @Configure ) ,于是在Springboot的开发世界里面,为了继续崇尚所谓的 “零配置” 提供有一种简单的支持,也就是说如果现在你真的有配置需要通过*.xml 文件编写 但是又不想出现配置文件的话,这个时候最简单的做法就是使用Bean的方式来进行类的配置
前提 该配置程序的Bean 所在的包必须是程序启动类所在包的子包之中,这样才可以自动扫描到
下面看一下这份代码
1.0 定义一个业务接口
package com.fabu.demo3.service;
public interface ITask {
public String info();
}
2.0 定义实现这个业务接口的类
package com.fabu.demo3.service.impl;
import com.fabu.demo3.service.ITask;
import org.springframework.stereotype.Service;
@Service
public class ITaskImpl implements ITask {
@Override
public String info() {
return "ZW";
}
}
3.0 写一个 controller 类
package com.fabu.demo3.controller;
import com.fabu.demo3.service.ITask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/")
public class MessageTaskController {
@Autowired
private ITask iTask;
@RequestMapping("/info")
public String info(){
return iTask.info();
}
}
4.0 启动类如下
package com.fabu.demo3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
/****
* 启动类
*/
@SpringBootApplication
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
然后代码目录就是这样
编写测试类
package com.fabu.demo3;
import com.fabu.demo3.controller.MessageTaskController;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
@SpringBootTest
@RunWith(SpringRunner.class)
@WebAppConfiguration
public class TestMessageTaskController {
@Autowired
private MessageTaskController messageTaskController;
@Test
public void testInfo(){
System.out.println(" 测试类 "+messageTaskController.info());
}
}
查看结果
利用以上的程序来了解一下 什么叫做Bean配置 为了清楚发现Bean的特点删除业务层的@Service 注解 那么现在这个对象是无法直接被注入的,于是在所有包的子包里面建议一个config包 里面写了一个配置程序类
package com.fabu.demo3.config;
import com.fabu.demo3.service.ITask;
import com.fabu.demo3.service.impl.ITaskImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration //此处为配置向
public class ITaskImplConfig {
/****
* 此处返回的是一个Spring 的配置Bean 与xml 的Bean 等价
* @return
*/
@Bean
public ITaskImpl getITaskImpl(){ //方法名 可以随意写
return new ITaskImpl();
}
}
结构目录为
测试运行 结果为
此时采用了自动扫描Bean 的模式来进行了相关对象的配置。
如果不是新项目 本来你老项目就有一个非常完善的xml配置文件出现了,那么难道还需要将整个xml换成Bean配置吗? 那么这样代价太大了,所以springboot 也支持这种xml配置 。
只需要在你启动类上加上@ImportResource(locations ={"spring xml配置文件.xml","spring xml配置文件.xml",}
代码如下
package com.fabu.demo3;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
/****
* 启动类
*/
@SpringBootApplication
@ImportResource(locations ={"spring xml配置文件.xml","spring xml配置文件.xml",} )
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
喜欢的麻烦 githua 上点个小星星
githua 代码如下 https://github.com/zhouwei520/Springboot/tree/master/demo3