文章目录
一、打开项目 二、创建子包 三、创建杀龙任务类 四、创建勇敢骑士类 五、创建Spring配置类 六、创建测试类 七、运行测试类 八、总结
一、打开项目
Maven项目 - SpringDemo
二、创建子包
在net.shuai.spring
包里创建day04
子包
三、创建杀龙任务类
在day04
子包里创建杀龙任务类 - SlayDragonQuest
package net. shuai. spring. day04 ;
public class SlayDragonQuest {
public void embark ( ) {
System . out. println ( "执行杀龙任务……" ) ;
}
}
注意:没有添加@Component注解符声明Bean
四、创建勇敢骑士类
在day04
子包里创建勇敢骑士类 - BraveKnight
package net. shuai. spring. day04 ;
public class BraveKnight {
private String name;
private SlayDragonQuest slayDragonQuest;
public void setName ( String name) {
this . name = name;
}
public void setSlayDragonQuest ( SlayDragonQuest slayDragonQuest) {
this . slayDragonQuest = slayDragonQuest;
}
public void embarkOnQuest ( ) {
System . out. print ( "勇敢骑士[" + name + "]" ) ;
slayDragonQuest. embark ( ) ;
}
}
注意:没有添加@Component注解符声明Bean;没有使用@Autowired注解符注入Bean
五、创建Spring配置类
在day04
子包里创建Spring配置类 - SpringConfig
package net. shuai. spring. day04 ;
import org. springframework. context. annotation. Bean ;
import org. springframework. context. annotation. Configuration ;
@Configuration
public class SpringConfig {
@Bean
public SlayDragonQuest slayDragonQuest ( ) {
return new SlayDragonQuest ( ) ;
}
@Bean
public BraveKnight braveKnight ( ) {
BraveKnight braveKnight = new BraveKnight ( ) ;
braveKnight. setName ( "罗宾汉" ) ;
braveKnight. setSlayDragonQuest ( slayDragonQuest ( ) ) ;
return braveKnight;
}
}
使用@Configuration注解表明当前类是一个配置类,这意味着这个类里可能有0个或多个@Bean注解,此处没有使用包扫描,因为所有的Bean都在此类中定义了。 使用@Bean注解,不带参数,声明当前方法的返回值是一个Bean,而Bean的名称就是方法名,当然也可以设置@Bean的参数,用来指定Bean的名称。
六、创建测试类
在/test/java
里创建net.shuai.spring.day04
包,在包里创建TestKnight
类
package net. shuai. spring. day04 ;
import org. junit. After ;
import org. junit. Before ;
import org. junit. Test ;
import org. springframework. context. annotation. AnnotationConfigApplicationContext ;
public class TestKnight {
private AnnotationConfigApplicationContext context;
@Before
public void init ( ) {
context = new AnnotationConfigApplicationContext ( SpringConfig . class ) ;
}
@Test
public void testKnight ( ) {
BraveKnight knight = ( BraveKnight ) context. getBean ( "braveKnight" ) ;
knight. embarkOnQuest ( ) ;
}
@After
public void destroy ( ) {
context. close ( ) ;
}
}
七、运行测试类
运行testKnight
测试方法,查看结果
八、总结
Spring管理Bean的四种方式
方式一:纯粹使用Spring配置文件(XML)来管理Bean 方式二:注解符搭配Spring配置文件(XML)来管理Bean 方式三:注解符搭配Spring配置类(Java)来管理Bean 方式四:纯粹使用Spring配置类(Java)来管理Bean