欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 Spring-boot-study02-spring.xml配置文件注入组件和@Bean注解注入组件差别

程序员文章站 2022-11-30 15:27:29
1.使用spring.xml向springboot容器中注入组件:创建empService类public class EmpService { //添加add方法方便验证 public void add(){ System.out.println("add()...."); }}在resources下创建spring01.xml配置文件

1.使用spring.xml向springboot容器中注入组件:

创建empService类


public class EmpService {
    //添加add方法方便验证
    public void add(){
        System.out.println("add()....");
    }
}

在resources下创建spring01.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">
    <!-- bean组件用于配置文件  id:组件名  class:配置类 -->  
    <bean id="empService" class="com.gaoge.springboot.service.EmpService">
    </bean>
</beans>

在application主配置类中配置xml文件

package com.gaoge.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;


/**
 * @ImportResource(locations ={"classpath:spring01.xml"}):用于导入spring配置文件,用于导入容器中
 */
@ImportResource(locations ={"classpath:spring01.xml"})
@SpringBootApplication
public class SpringBoot02ConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBoot02ConfigApplication.class, args);
    }

}

注解详解:@ImportResource(locations ={“classpath:spring01.xml”}):用于导入spring配置文件,用于导入容器中

编写测试:

import com.gaoge.springboot.bean.Emp;
import com.gaoge.springboot.service.EmpService;
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.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests {

    //创建对象
    @Autowired//自动注入组件
    Emp emp;
	 //属性绑定
    @Test
    public void contextLoad(){
        System.out.println(emp);
    }
    
	//测试spring01.xml配置文件注入
    @Autowired
    ApplicationContext context;//获取上下文即可验证service组件
    @Test
    public void textXml(){
        EmpService empService = (EmpService) context.getBean("empService");//创建对象配置对象名
        System.out.println(empService);
        //调用add方法
        empService.add();

    }
  
}

测试结果:

荐
                                                        Spring-boot-study02-spring.xml配置文件注入组件和@Bean注解注入组件差别
----------------------------------------------------------------------------------------------------------------------------------------

2.使用@Bean注解向springboot容器中注入组件

创建empConfig类

import com.gaoge.springboot.service.EmpService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Configuration 他是spring里的注解,用于标识当前类是一个配置类,来表示对应spring配置文件
 */
@Configuration
public class EmpConfig {
    /**
     * @Bean 标识方法作为Bean组件用于向容器中注入
     * 1.返回值就是向容器中注入的组件对象
     * 2. 方法名就是这个组件的id值
     * @return
     */
    @Bean
    public EmpService empService2(){
        System.out.println("EmpService组件注入成功....");
        //返回的是组件对象
        return new EmpService();
    }
}

注解详解:
** 1. @Configuration 他是spring里的注解,用于标识当前类是一个配置类,来表示对应spring配置文件
2.@Bean 标识方法作为Bean组件用于向容器中注入
**

如果使用@Bean直接注入组件则无需使用@ImportResource

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
/**
 * @ImportResource(locations ={"classpath:spring01.xml"}):用于导入spring配置文件,用于导入容器中
 */
//@ImportResource(locations ={"classpath:spring01.xml"})
@SpringBootApplication
public class SpringBoot02ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBoot02ConfigApplication.class, args);
    }
}

编写测试:

package com.gaoge.springboot;


import com.gaoge.springboot.bean.Emp;
import com.gaoge.springboot.service.EmpService;
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.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests {

    //创建对象
    @Autowired//自动注入组件
    Emp emp;
    //属性绑定
    @Test
    public void contextLoad(){
        System.out.println(emp);
    }

    //测试@Bean组件注入
    @Autowired
    ApplicationContext context;//获取上下文即可验证service组件
    @Test
    public void textXml(){
//        EmpService empService = (EmpService) context.getBean("empService");//创建对象配置对象名
//        System.out.println(empService);
//        //调用add方法
//        empService.add();
        EmpService empService = (EmpService) context.getBean("empService2");
        System.out.println(empService);
    }
}

结果:

荐
                                                        Spring-boot-study02-spring.xml配置文件注入组件和@Bean注解注入组件差别

本文地址:https://blog.csdn.net/qq_45460539/article/details/107252627