一、导入组件的几种方式
1.1 @Configuration+@Bean 导入组件
/***
* @Configuration 本身也是一个组件
* proxyBeanMethods = true表示单例 默认是true
* proxyBeanMethods = false 不检查单例,创建bean是更快
*/
@Configuration(proxyBeanMethods = false)
public class Animal {
@Bean
User User01() {
return new User("张三", 20);
}
@Bean
Cat Cat01() {
return new Cat("tom", "red");
}
}
省略User和Cat两个bean的创建
测试
@SpringBootTest
class SpringBoot2xApplicationTests {
@Autowired
private User user;
@Test
void contextLoads() {
System.out.println("★★★★★★---》"+user.toString());
}
}
结果
1.2 @Component、@Controller、@Service、@Repository 与springMVC原始的用法相同
用这些标注的类会自动生成组件并导入到ioc容器里面。
1.3 @Import 导入组件 导入无参构造方法的组件,如果这个没有无参构造方法就会报错。
@SpringBootApplication
@Import({User.class})
public class SpringBoot2xApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(SpringBoot2xApplication.class, args);
Map<String, User> beansOfType = run.getBeansOfType(User.class);
for (String key : beansOfType.keySet() ) {
System.out.println("★★★★★★---》" +key+":" +beansOfType.get(key));
}
System.out.println(beansOfType.get("User01")==beansOfType.get("com.tiandy.springboot2_x.User"));
}
}
结果: