Spring framework

Spring介绍及相关配置

预备:JavaEE开发中的分层架构,上一层依赖于下一层,为了尽量减少依赖,尽量面向接口编程。

  1. 表示层:负责数据的展示。
    Web层,一般都会采用MVC模式来进行开发。
  2. 业务逻辑层:负责应用中的业务逻辑处理
    Service层,以完成业务逻辑处理为目的,方法中可以会涉及到多表的CRUD操作。
  3. 持久层:负责数据的存取
    Dao层,方法都以完成单表的CRUD操作为目的


一、IoC特性

  1. IoC(Inversion Of Control):反向控制,控制反转
    DI(Dependency Injection):依赖注入
  2. 对象的依赖类实例不是主动去创建了,而是由IoC容器注入。

二、Spring应用的环境搭建

1. 添加spring框架的包到classpath:

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>
<!-- spring core -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>${spring.version}</version>
</dependency>
<!-- aop -->
<dependency>
	<groupId>org.aspectj</groupId>
	<artifactId>aspectjweaver</artifactId>
	<version>${aspectj.version}</version>
</dependency>
<dependency>
	<groupId>aopalliance</groupId>
	<artifactId>aopalliance</artifactId>
	<version>1.0</version>
</dependency>

2. 添加spring的配置文件(applicationContext.xml,beans.xml)到classpath:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
...
</beans>

3. 支持

不能上网的情况下,要在配置文件中出提示,必须给Eclipse添加xsd的支持

windows–>preferences->myeclipse–>files and editors–> xml–>xmlcatalog

  1. 点击“add”,在location中选“File system”
  2. 然后在Spring解压目录的dist/resources目录中选择
    spring-beans.xsd
  3. 把key type改为Schema location
  4. key改为
    http://www.springframework.org/schema/beans/spri
    ng-beans.xsd

三、Spring应用的开发步骤

  1. 在spring的配置文件中注册要由Spring IoC容器管理的Bean:不仅管理Bean的生命周期,还管理
    Bean之间的依赖关系。
  2. bean的配置:
    <bean id="bean的唯一标识名" class="Bean类的全限定名"/>
  3. bean的依赖关系配置:(后面有详细介绍)
  4. 从spring容器中获取指定的Bean:
    //创建出spring应用上下文实例
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取指定的Bean实例
Object obj = context.getBean("标识名", 类型信息对象);

四、Spring中的两种IoC容器

  1. BeanFactory:Bean工厂(最简单的容器)。创建和分发Bean对象,创建协作对象间的关系,参与
    管理Bean的生命周期。
    常用实现类:XmlBeanFactory
  2. ApplicationContext:Spring应用上下文。
    建立在BeanFactory基础之上,还提供了文本信息解析工具(对国际化的支持),载入文件资源的通用
    方法,还可以向注册为监听器的Bean发送事件。
    1. ClassPathXmlApplicationContext – 从类路径中的XML文件载入上下文定义信息。
    2. AnnotationConfigApplicationContext– 从注解的Java代码配置载入上下文定义信息。。
    3. XmlWebApplicationContext – 从web系统中的XML文件中载入上下文定义信息。
  3. 从IoC容器中获取Bean实例的方法:
    1. Xxx xxx = context.getBean(“标识名或别名”, 类型信息对象);
    2. Xxx xxx = (Xxx)context.getBean(“标识名或别名”);
    3. 如果Spring应用上下文中只配置了一次本类:
      Xxx xxx = context.getBean(类型信息对象);

五、Bean的装配

1. 基本形式:

(spring3以下版本id属性值不能出现特殊字符,如/),name用于取别名。
<bean id="唯一标识名" class="类的全限定名"/>

2. 注入依赖的常用方式

1 构造器注入:对应的类中添加相应的构造方法。
<constructor-arg index="参数的位置索引值" [value="注入值" | ref="注入引用"] />
2. setter注入:建议使用。必须要有无参的构造方法,必须为需要注入的属性提供setter方法。

<property name="属性名" ref="注入引用"/>

3. 指定Bean的生存范围

默认情况,Spring容器中管理的是Bean实例是单例的。

  1. scope=“singleton”:默认值
  2. scope=“prototype”:从Spring容器中获取一次就创建一个实例
  3. request:在HTTP请求范围内。只有在使用具有Web能力的Spring容器时才有效
  4. session:HTTP Session范围。同上。

4. 指定Bean的初始化和销毁回调方法:

通过init-method,destroy-method属性来指定对应的方法。

5. 装配Bean的继承

通过parent属性来完成。
还可能通过abstract="true"来指定为抽象的。

6. 小心使用自动装配

通过auto-wire属性来完成。
可选值:byName, byType, autodetect, default

自动装配也可以配置在spring配置文件的根元素上:
<beans ... default-autowire="byName">
可以配置spring对Bean的初始化进行延迟:
<beans ... default-lazy-init="true">

六、Spring AOP

七、Spring 注解配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值