Spring学习系列 自动化装配Bean
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring学习系列 自动化装配Bean相关的知识,希望对你有一定的参考价值。
一、Spring装配-自动化装配
@Component和@ComponentScan
通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组件扫描默认是不启动的,需要显式的配置Spring,从而命令Spring去寻找带有(@Component)注解的类,并为其创建bean。
1、定义接口
package com.seven.springTest.service; public interface HelloWorldApi { public void sayHello(); }
2、定义接口的实现类
package com.seven.springTest.service.impl; import org.springframework.stereotype.Component; import com.seven.springTest.service.HelloWorldApi; @Component //通过注解指定该类组件类,告知spring要为它创建Bean public class PersonHelloWorld implements HelloWorldApi { @Override public void sayHello() { System.out.println("Hello World,This Is Person!"); } }
3、前面说过了,spring并不能自动启用组件扫描,需要进行显式的配置,这里通过java类来进行显式的配置,定义java配置类HelloWorldConfig,在配置类中我们没有显式的声明任何bean,只不过是使用了@CompontentScan注解来启用组件扫描
package com.seven.springTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan // 启用组件扫描 public class HelloWorldConfig { }
现在所有的工作已经完成,我们来测试下
package com.seven.springTest.main; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.seven.springTest.HelloWorldConfig; import com.seven.springTest.service.HelloWorldApi; public class HelloWorldTest { public static void main(String[] args) { //1. 声明Spring上下文,采用java配置类 ApplicationContext ac = new AnnotationConfigApplicationContext(HelloWorldConfig.class); //2. 声明Spring应用上下文,采用xml配置 //ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); //通过Spring上下文获取Bean,在这里Spring通过自动扫描发现了PersonHelloWorld的实现,并自动创建bean。 HelloWorldApi hwapi = ac.getBean(HelloWorldApi.class); //通过sayHello()的输入内容可以看到,hwapi为PersonHelloWorld的实例 hwapi.sayHello(); } }
以上是关于Spring学习系列 自动化装配Bean的主要内容,如果未能解决你的问题,请参考以下文章