最近有时间 回顾一下2年前用这个Springboot的点点滴滴 Springboot Bean 配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32048567/article/details/85699380

     在使用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

猜你喜欢

转载自blog.csdn.net/qq_32048567/article/details/85699380