荐 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();
}
}
测试结果:
----------------------------------------------------------------------------------------------------------------------------------------
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);
}
}
结果:
本文地址:https://blog.csdn.net/qq_45460539/article/details/107252627