1.Spring概述

什么是 Spring 

 

Spring 是一个开源框架,Spring 是于2003  年兴起的一个轻量级的Java  开发框架,由Rod Johnson在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何 Java 应用都可以从 Spring 中受益。Spring 的核心是控制反转

IoC)和面向切面(AOP)。简单来说,Spring 是一个分层的 JavaSE/EEfull-stack(一站式) 轻量级开源框架。

 

EE 开发分成三层结构:

  • WEB 层:Spring MVC.
  • 业务层:Bean 管理:(IOC)
  • 持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框架.

 

Expert One-to-One J2EE Design and Development :J2EE 的设计和开发:(2002.EJB) Expert One-to-One J2EE Development without EJB :J2EE 不使用 EJB 的开发.

为什么学习 Spring

 

方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理

AOP 编程的支持

Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程方便程序的测试

Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序方便集成各种优秀框架

Spring   不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、

MyBatis、Quartz 等)的直接支持降低 JavaEE API 的使用难度

Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装, 使这些 API 应用难度大大降低

Spring 的版本:

Spring 3.X  和 Spring4.X

Spring 的入门案例:(IOC)

IOC 的底层实现原理

IOC:Inversion of Control  控制反转.  指的是 对象的创建权反转(交给)给 Spring.

作用是实现了程序的解耦合.

下载 Spring 的开发包:

 

官网:http://spring.io/

下 载:http://repo.springsource.org/libs-release-local/org/springframework/spring

压:(Spring 目录结构:)

  • docs :API 和开发规范.
  • libs :jar 包和源码.
  • schema :约束.

创建 web 项目,引入 Spring 的开发包:

引入相关配置文件

log4j.properties applicationContext.xml
引入约束:
spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configur ation.html

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>

编写相关的类:

public interface UserDao {


public void sayHello();
}


public class UserDaoImpl implements UserDao {


@Override
public void sayHello() { System.out.println("Hello Spring...");
}

完成配置:

<!-- Spring 的入门案例================ -->
<bean id="userDao" class="cn.itcast.spring.demo1.UserDaoImpl"></bean>

编写测试程序:

@Test
// Spring 的方式:
public void demo2(){
// 创建 Spring 的工厂类:
ApplicationContext applicationContext 
 = new ClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂解析 XML 获取 Bean 的实例.
UserDao userDao = (UserDao) applicationContext.getBean("userDao"); userDao.sayHello();
}

IOC DI:

 

IOC :控制反转,将对象的创建权交给了 Spring.

DI :Dependency Injection 依赖注入.需要有 IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去.

 

Spring 中的工厂(容器):

 

ApplicationContext:

ApplicatioContext 接口有两个实现类:

ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件.

FileSystemXmlApplicationContext:加载本地磁盘下 Spring 的配置文件

BeanFactory(过时):

BeanFactory ApplicationContext 的区别:

配置 STS XML 的提示:

Spring 配置文件中提示的配置

​​​​​​​Spring 的相关配置:

​​​​​​​id 属性和 name 属性标签的配置

id	:Bean 起个名字.	在约束中采用 ID 的约束:唯一. 必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号 id:不能出现特殊字符.
<bean id=”bookAction”>
name:Bean 起个名字.	没有采用 ID 的约束. name:出现特殊字符.如果<bean>没有 id 的话 , name 可以当做 id 使用.
* 整合 struts1 的时候:
<bean name=”/loginAction” >

Scope 属性:Bean 的作用范围.

​​​​​​​

​​​​​​​Bean 的Th命周期的配置:

 

​​​​​​​Spring Bean 的属性注入:

​​​​​​​SpEL 的方式的属性注入:Spring3.x 版本后提供的方式.​​​​​​​

SpEL:Spring Expression Language.
语法:#{ SpEL }

<!-- SpEL 的注入的方式 -->
<bean id="car2" class="cn.itcast.spring.demo4.Car2">
<property name="name" value="#{'奔驰'}"/>
<property name="price" value="#{800000}"/>
</bean>


<bean id="person" class="cn.itcast.spring.demo4.Person">
<property name="name" value="#{'冠希'}"/>
<property name="car2" value="#{car2}"/>
</bean>


<bean id="carInfo" class="cn.itcast.spring.demo4.CarInfo"></bean>

引用了另一个类的属性
<bean id="car2" class="cn.itcast.spring.demo4.Car2">
<!--	<property name="name" value="#{'奔驰'}"/> -->
<property name="name" value="#{carInfo.carName}"/>
<property name="price" value="#{carInfo.calculatePrice()}"/>
</bean>

​​​​​​​注入复杂类型:

<!-- Spring 的复杂类型的注入===================== -->
<bean id="collectionBean" class="cn.itcast.spring.demo5.CollectionBean">
<!-- 数组类型的属性 -->
<property name="arrs">
<list>
<value>会希</value>
<value>冠希</value>
<value>天一</value>
</list>
</property>

<!-- 注入 List 集合的数据 -->
<property name="list">
<list>
<value>芙蓉</value>
<value>如花</value>
<value>凤姐</value>
</list>
</property>

<!-- 注入 Map 集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
<entry key="bbb" value="222"/>
<entry key="ccc" value="333"/>
</map>
</property>

<!-- Properties 的注入 -->
<property name="properties">
<props>
<prop key="username">root</prop>
<prop key="password">123</prop>
</props>
</property>
</bean>

​​​​​​​Spring 的分配置文件的开发

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值