spring框架学习(一)

Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,怎么简化呢?通过IOC和AOP来实现的。程序的并通过POJO为基础的编程模型促进良好的编程习惯。

Spring IOC

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

Spring以Bean的方式管理所有的组件,J2EE的全部组件都被视为Bean管理,负责创建Bean的实例,并管理其生命周期,Bean在Spring的容器中运行,无须知道Spring容器的存在也可以使用Spring的一些特性

Spring配置文件

Bean标签中的属性:

id:Bean的唯一标识名,必须为合法的XML ID,在整个XML文档中唯一,如果没有特殊需要,我们在标识一个Bean的时候,一般推荐使用id。

name:用于为id创建一个或多个别名,可以是任意字母或者符号,多个别名之间以逗号或空格分隔

class:用于定义类的全限定名(包名加类名),Spring在创建对象的时候需要用到此属性,因此该属性不能指定接口。

parent:子类Bean定义其所引用的父类Bean,继承父类的所有属性。值得一提的是,在写代码的时候,即便是两个类之间没有继承关系,我们同样可以使用该属性。

abstract:用于定义Bean是否为抽象Bean,默认为false,表示此Bean将不会被实例化。一般用于父类Bean,可以在子类继承的时候使用。

scope:用于定义Bean的作用域,singleton表示在每个Spring IoC容器中一个bean定义对应一个对象实例,即Spring使用单例模式获取实例。prototype表示一个bean定义对应多个对象实例,即非单例模式

lazy-init:用于定义Bean是否实现初始化,默认为default。若为true,将在BeanFactory启动时初始化所有Singleton Bean;若为false,则在Bean请求时创建Singleton Bean

autowire:用于定义Bean的自动装配方式,默认为default,包括不使用自动装配功能、通过Bean的属性名实现自动装配、通过Bean的类型实现自动装配、通过Bean类的反省(Introspection)机制决定选择使用constructor或者byType。

IOC的优点

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。

ApplicationContext

ApplicationContext是基于BeanFactory之上的,提供了应用程序框架服务,扩展的新功能如下
提供国际化的支持
资源访问,如URL和文件 
事件传递
载入多个配置文件等

依赖注入

依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

依赖注入有两种方式:

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

<bean id="computer2" class="com.zzzy.ch1.Computer">
<constructor-arg index="0" ref="mainFrame" />
<constructor-arg index="1" ref="samsung" />

</bean>
Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

<bean id="computer" class="com.zzzy.ch1.Computer" >
<property name="mainFrame" ref="mainFrame"/>
<property name="display" ref="lg" />

</bean>

设值注入的优点 
如果依赖关系(或继承关系)较为复杂 ,设值注入模式往往更为简洁 有些地方有其局限性直观,更加自然
构造注入的优点
构造期即创建一个完整、合法的对象避免了繁琐的setter方法的编写无需担心在调用过程中执行setter方法对组件依赖关系产生破坏在构造函数中决定依赖关系的注入顺序

基于注解的容器配置

1.实例化
@Repository 数据访问层bean(dao层)
@Service 业务层bean(service层)
@Controller 视图层bean(控制器层)
@Component 常用于javaBean(实体类层)
@Component注解唯一的一个可选参数是value,用于指定bean的名称(即id值,所以必须是唯一的),若不指定,则bean默认的名称为类名首字母小写

2.使用 @Resource 注解注入依赖
 @Autowired 默认按 byType 自动注入
 @Resource 默认按 byName 自动注入


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值