springboot---Configration,Bean
1.Configuration和Bean
package com.atguigu.config; import com.atguigu.bean.Pet; import com.atguigu.bean.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 1.配置类中使用Bean注解给容器注册组件,默认是单例 * 2.配置类也是组件 * 3.proxyBeanMethods是不是代理bean的方法 * Full(proxyBeanMethods = true) * Lite(proxyBeanMethods = false) * 组件依赖 * 假如组件没有互相依赖:使用false;效率快 * 假如组件有互相依赖:使用true;效率慢 */ @Configuration(proxyBeanMethods = false)//告诉spring这是一个配置类,相当于xml配置文件 public class MyConFig { @Bean//给容器添加组件,默认方法名就是组件id,返回值类型就是组件类型,返回的值就是组件的实例,也就是赋值 /** * 配置类无论调用多想遍方法,对象都是同一个对象,单例模式 */ public User user(){ User user = new User("小王",14); user.setPet(pet()); return user; } @Bean("tom")//可以给bean取别名,否则就是方法名 public Pet pet(){ return new Pet("tomcat"); } }
User
package com.atguigu.bean; /** * @author Administrator * @description: TODO * @date 2021/12/11 15:39 */ public class User { private String name; private Integer age; private Pet pet; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public Pet getPet() { return pet; } public void setPet(Pet pet) { this.pet = pet; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", pet=" + pet + '}'; } }
pet
package com.atguigu.bean; /** * @author Administrator * @description: TODO * @date 2021/12/11 15:39 */ public class Pet { private String name; public Pet() { } public Pet(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Pet{" + "name='" + name + '\'' + '}'; } }
测试
package com.atguigu; import com.atguigu.bean.Pet; import com.atguigu.bean.User; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; /** * 主程序入口 */ @SpringBootApplication public class MainApplication { public static void main(String[] args) { //1.返回我们的ioc容器 ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class,args); //2.查看容器中的组件 String[] names = run.getBeanDefinitionNames(); for (String name : names) { //System.out.println(name); } //3.从容器中获取组件 Pet tom1 = run.getBean("tom",Pet.class); Pet tom2 = run.getBean("tom",Pet.class); System.out.println("组件:"+(tom1==tom2)); User user = run.getBean("user", User.class); Pet tom = run.getBean("tom",Pet.class); System.out.println("用户的狗:"+ (user.getPet()==tom)); } }
。。。