容器相关概念
-
容器的主要作用是创建并管理bean
-
创建方式:通过反射技术,创建bean实例
-
底层创建的模式为:工厂模式
-
容器中的bean实例,默认为单例的方式管理.(配置文件中scope="prototype" 属性,更改创建实例的方式)
-
创建Application容器有两种方式:1.通过配置文件2.通过注解
加载配置文件创建容器
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config2.xml");
配置文件:声明组件
<!--关联一个具体的实现类 -->
<bean id="controllerBean" class="com.apesource.web.controller.OrderController">
<property name="orderService" ref="orderServiceBean"> </property>
</bean>
配置文件: 声明注入name为属性,ref为实体类
<bean id="orderServiceBean" class="com.apesource.service.OrderService">
<property name="accountDAO" ref="accountDAOBean"/>
<property name="iOrderDao" ref="orderDaoBean"/>
<property name="IProductDAO" ref="productBean"/>
</bean>
通过注解的方式创建Application容器(扫描所有的包)
ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.apesource");
设计理念
-
IOC(Inverse of Control)控制反转
-
DI(Dependency Injection)依赖注入
IOC与DI是相同设计理念的不同描述:作用是降低类与类之间的耦合.之前的主动创建实例,现在通过容器按照组件之间的依赖关系,完成了组件之间的注入.(控制对象的主体反转了.不再主动控制,通过配置文件或注解,等待容器注入.)
-
注入的三种方式:1.属性setter注入 2.构造注入 3.接口注入
注解
声明bean的注解
-
@Component:组件
-
@Controller:控制器组件
-
@Service:业务逻辑组件
-
@Repository:数据访问层组件
声明注入的注解
Java标准注解
-
Resource:Javax包提供注解,自动注入,默认按照类型注入,如果多个类型,可以市容Name属性指定类型.
Spring Framework
Autowired:自动装配,按照当前声明接口类型,查找实现当前接口的对象bean,进行注入
Qulifier:按照bean名称配合Autowired使用,按bean名称查找实现当前接口的对象bean
接口的多个实现类:使用Resource注解或Autowired与Qulifier注解配合使用