bean:可以理解为普通对象
javabean:当前类的属性设为私有。
springbean:是由spring生成管理的对象
    spring-context:
    classpathxmlapplicationcontext的参数(spring.xml)
    定义xml:<bean id="" class="路径"/>
    user = 对象.getBean("user",User.class)

============================================================================================================

定义bean的方式
    1、xml的方式定义:<bean/>
        xml定义扫描包:<context:component-scan base-package="com.pshdhx">
    2、@Component @Service里边实质上也加了@Component
    3、@Bean的名字=方法名字=对应的对象  
        AnnotationconfigApplicationContext(basePakages...Config.class) 配置类:
        //@Component("com.pshdhx") //凡是在这个包下边的类,都认为是一个bean
        public class Config{
            @Bean
            public User user(){
                return new User();
            }
        }
        //applicationCOntext.register(Config.class);
    4、beanDefinition

    //框架用法:编程式用法(使用​transactionManage​​这个类),声明式用法(@Transaction)
    BeanDefinitionBuilder.genericBeanDefinition().getBeranDefinition();得到对象
    bean.setBeanClass(User.class);
    appicationContext.registerBeanDefiniton("user",User.class)[编程方式定义bean]
    applicationContext.refresh();

=======================================================================================================================
    FactoryBean使用和理解【底层】

    @Component
    public class ZhouyuFactoryBean implements FactoryBean{
        @Override...

    }
    Person.class class<?> return Person.class;
    定义了一次,生成了两个Bean对象
    1、&user.zhouyuBeanFactory对象
    2、user:Person对象
    所以:
        applicationContext.getBean("user",Person.class);  这里的返回值和factory中的new的对象是同一个
        applicationContext.getBean("&user",ZhouyuFactoryBean.class);

    
    ========================================
    Supplier的使用和定义:Bean的方式
    1、user类加@Component //不写也能,bean的名字也是默认生成 
    2、applicationContext.registerBean(User.class,new Supplier<User>(){
        @Override
        public User get(){
            .....set 
            return ..;
        }
    })
    //给user的bean对象赋值
    ----
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
1、单例池
        注册=component的效果

    单例bean,原型(多例模式)

    单列bean、    
        单例bean!=spring容器里只能有一个user类型的bean,因为id可以不同,但是类型可以相同(参照xml)
        scope="prototype",从容器中多次取出的bean是一样的.
    单例模式的区别

spring容器:
    1、beanFactory
    2、ApplicationContext
    3、AnnotationConfigApplicationContext
    4、ClassPathXmlApplicationContext
    5、FileSystemXmlApplicationContext