Ioc 详解
五大注解只能加在类上,并且只能加在自己的代码上,如果引入了一个第三方Jar包,也希望交给Spring管理,是没有办法加五大类注解的,此时我们可以使用@Bean
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
//Spring 上下文
ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
// 从context中获取bean
UserConfiguration userConfiguration = context.getBean(UserConfiguration.class);
userConfiguration.doConfiguration();
System.out.println("userConfiguration :" + userConfiguration);
UserConfiguration userConfiguration2 = context.getBean(UserConfiguration.class);
userConfiguration2.doConfiguration();
System.out.println("userConfigurationw2 :" + userConfiguration2);
System.out.println("======================");
System.out.println("userConfiguration == userConfigurationw2" + (userConfiguration == userConfiguration2));
}
}
他们两个的地址相同,也就是说它俩指向同一个对象。我们使用五大注解的方式,从容器中取多少次取到的都是同一个对象。
所以还有这一种场景:对于一个类,定义多个对象时,比如数据库操作,定义多个数据源,我们需要多个对象,就可以使用@Bean
方法注解 @Bean
@Data
public class UserInfo {
private Integer id;
private String name;
private Integer age;
}
public class BeanConfig {
@Bean
public UserInfo userInfo(){
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setName("zhangsan");
userInfo.setAge(18);
return userInfo;
}
@Bean
public UserInfo userInfo2(){
UserInfo userInfo = new UserInfo();
userInfo.setId(2);
userInfo.