今天就跟大家聊聊有关Spring容器中怎么添加组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
目前创新互联公司已为上千多家的企业提供了网站建设、域名、虚拟主机、成都网站托管、企业网站设计、黔西网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
建个TestBean类
public class TestService {}
新建一个beans.xml,写一个service的bean配置
然后可以Application类里直接引用,也可以加载Configuration配置类上面
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ImportResource;@SpringBootApplication@ImportResource(locations = {"classpath:beans.xml"})public class SpringbootPropertiesConfigApplication { public static void main(String[] args) { SpringApplication.run(SpringbootPropertiesConfigApplication.class, args); }}
Junit测试类:
import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.ApplicationContext;@SpringBootTestclass SpringbootPropertiesConfigApplicationTests { //装载ioc容器 @Autowired ApplicationContext ioc; @Test void contextLoads() { //测试这个bean是否已经加载到Spring容器 boolean flag = ioc.containsBean("testService"); System.out.println(flag); }}
经过测试,返回的是true,ok,换Springboot注解的方式实现
新建一个PropertiesConfig配置类,注意:组件的id就是方法名
import com.example.springboot.properties.service.TestService;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration //@Configuration注解实践上也是一个Componentpublic class PerpertiesConfig { //通过@Bean注解将组件添加到Spring容器,组件的id就是方法名 @Bean public TestService testService1(){ return new TestService(); }}
Junit测试继续:
import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.ApplicationContext;@SpringBootTestclass SpringbootPropertiesConfigApplicationTests { @Autowired ApplicationContext ioc; @Test void contextLoads() { //传方法名testService1 boolean flag = ioc.containsBean("testService1"); System.out.println(flag); }}
Junit测试,返回的还是TRUE,如果改下name为testService就是返回FALSE的,因为组件名称就是@Bean注解对应的方法名
其实以前写Spring项目的时候,很显然也可以用@Service或者@Controller注解将组件添加到容器里,如果你去点一下源码,其实这些注解都有一个共同点就是都引入了@Component注解,而本博客介绍的@Configuration注解,本质上也是引入了@Component注解,而@Bean是没有引入的,所以,如果你只加@Bean,而不加@Configuration注解的情况,是不可以将组件添加到Spring容器的
看完上述内容,你们对Spring容器中怎么添加组件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。