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