Spring:
Spring默认配置文件回去WEB-INF下的spring-servlet.xml文件
Spring注解:
1、@controller 控制器(注入服务)
- 用于标注控制层,相当于struts中的action层
2、@service 服务(注入dao)
- 用于标注服务层,主要用来进行业务的逻辑处理
3、@repository(实现dao访问)
- 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>
)
控制反转和依赖注入
控制反转:举个例子,以前我们要创建一个类,都是我们主动去创建,而Spring的做法是我们把控制权交给IOC容器,我们变成请求者
依赖注入:在控制反转中获取资源的方式叫依赖注入,Spring目前只支持两种注入方式,还有一种接口注入方式Spring暂不支持。
两者区别:
设值注入:
a)与传统的Javabean的写法更相似,通过setter方法设定依赖关系显得更加直观自然
b)对于复杂的依赖关系,如果采用构造注入,会导致构造器过于臃肿
c)多参数情况下使得构造器变得更加笨重
构造注入:
a)构造注入可以在构造器中决定依赖关系的注入顺序
b)对于依赖关系无须变化的bean,构造注入更有用处,无须担心后续代码对依赖关系的破坏
c)依赖关系只能在构造器中设定,更符合高内聚的原则
建议采用以设值注入为主,构造注入为辅的注入策略。对于依赖关系无须变化的注入,尽量采用构造注入;而其它依赖关系的注入,则考虑设置注入。
Spring配置bean实例化有哪些方式?
1)使用类构造器实例化(默认无参数)
<bean id="bean1" class="cn.itcast.spring.b_instance.Bean1"></bean>
2)使用静态工厂方法实例化(简单工厂模式)
//下面这段配置的含义:调用Bean2Factory的getBean2方法得到bean2
<bean id="bean2" class="cn.itcast.spring.b_instance.Bean2Factory" factory-method="getBean2"></bean>
3)使用实例工厂方法实例化(工厂方法模式)
//先创建工厂实例bean3Facory,再通过工厂实例创建目标bean实例
<bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>