Bean的实例化
什么是Bean的实例化
Spring容器自动地帮助我们生成对应的Bean对象
Bean的实例化方法
构造方法实例化,静态工厂实例化,实例工厂实例化
构造方法实例化
package com.itheima;
public class Bean1{
public Bean1(){
System.out.println("这是Bean1");
}
}
src/main/resources/applicationBean1.xml
<beans>
<bean id = "bean1" class="com.itheima.Bean1"></bean>
</beans>
静态工厂实例化
package com.itheima
public class Bean2{
public Bean2(){
System.out.println("这是Bean2");
}
}
package com.itheima;
public class MyBean2Fctory{
public static Bean2 createBean(){
return new Bean2();
}
}
<beans>
<bean id="bean2" class="com.itheima.MyBean2Factory"
factory-method = "createBean"/>
</beans>
实例工厂实例化
package com.itheima;
public class Bean3{
public Bean3(){
System.out.println("这是Bean3");
}
}
package com.itheima;
public class MyBean3Factory{
public MyBean3Factory(){
System.out.println("bean3工厂实例化中");
}
public Bean3 createBean(){
return new Bean3();
}
}
<beans>
<!--配置工厂-->
<bean id = "myBean3Factory"
class = "com.itheima.MyBean3Factory"/>
<!--使用factory-bean属性指向配置的实例工厂-->
<bean id="bean3" factory-bean="myBean3Factory"
factory-method="createBean"/>
</beans>
Bean的作用域
Bean的作用域是指Bean实例的有效范围
singleton 单例模式。在单例模式下,Spring容器中只会存在一个共享的Bean实例,所有对Bean的请求,只要请求的id(或name)与Bean的定义相匹配,就会返回Bean的同一个实例
prototype 原型模式。每次从容器中请求Bean时,会产生一个新的实例
Bean的装配方式
装配的本质:赋值
基于XML的装配
setter方法
<bean id="User2" class="com.itheima.User2">
<property name="id" value="2"></property>
<property name="name" value="李四"></property>
<property name="password" value="456"></property>
</bean>
构造方法
<bean id="user1" class="com.itheima.User1">
<constructor-arg name="id" value="1"></constructor-arg>
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="password" value="123"></constructor-arg>
</bean>
基于注解的装配
注解 | 描述 |
@Component | 指定一个普通的Bean,可以作用在任何层次 |
@Controller | 指定一个控制器组件Bean,用于将控制层的类标识为Spring中的Bean,功能上等同于@Component |
@Service | 指定一个业务逻辑组件Bean,用于将业务逻辑层的类标识为Spring中的Bean,功能上等同于@Component |
@Repository | 指定一个数据访问组件Bean,用于将数据访问层的类标识为Spring中的Bean,功能上等同于@Component |
@Scope | 指定Bean实例的作用域 |
@Value | 指定Bean实例的注入值 |
@Autowired | 指定要自动装配的对象 可标注于实现类也可标注于接口 |
@Resource | 指定要注入的对象 |
Bean的生命周期
在singleton作用域中,Spring容器可以管理Bean的生命周期,控制者Bean的创建,初始化和销毁;
在prototype作用域中,Spring容器只负责创建Bean实例,不会管理生命周期