Spring框架

  • spring框架概述:

概述: 为了解决项目中各层之间的松耦合问题(起到组件之间的粘结作用).  开源框架.

官网:  www.spring.io 版本 :  3.x  4.x(建议) 5.x

 

好处:

1.不依赖于应用服务器.

2.IOC(控制反转)技术实现组件控制.

通过DI(依赖注入)技术提高了组件之间的解耦.

3.通过AOP(面向切面编程)技术实现安全、事务、日志功能的统一管理,

提高复用.

4.Spring框架可以几乎与其他任何框架进行良好的整合使用.

5.Spring所有项目之间不相互依赖.

 

  • 编写第一个Spring项目:

第一个Spring程序:  简单实现第一个IOC控制(对象的生命周期控制).

1.创建项目.导入jar包.

2.IOC : 对象的创建,交由Spring容器完成.

Spring容器创建.applicationContext.xml

  1. 创建实体类, 将类实例的创建交给Spring容器.

<bean id="user1" class="com.hfxt.domain.User"></bean>

4.测试Spring容器启动, 并创建得到对象.

ApplicationContext context = new  ClassPathXmlApplicationContext("容器");

Object o1 = context .getBean( 名称 );

 

  • IOC和DI :

IOC : 控制反转. 本质: 将手动创建对象的工作,交给Spring容器实现完成.

1.在Spring容器中可以配置创建实例对象.无论带参,无参构造实例都是可以实现的.

Spring.xml容器中配置: <bean id=”’ class=”” >

 

 

2.如何通过注解的用法代替Spring配置文件中的写法.实现IOC控制.

2.1: 首先需要在实体类中: 采用注解.

@Component , @Controller , @Service , @Repository

2.2: 基于spring容器配置注解的扫描和支持.

<context:component-scan  base-package="父包">

 

切记 :  当采用IOC注解的方式进行对象的创建,在没有指定对象名的情况下,默认生成对象名称:  类名称首字母小写作为: 默认的对象名.

 

DI : 依赖注入.含义 :  指的是针对实体类中: 属性成员赋值操作.

  1. 针对实体中的属性实现注入: 采用容器配置写法实现.

1.1:类中依赖的属性: 必须get/set封装.

1.2:进行注入:<property name=”属性名” value=”属性值”  ref=”属性引用”/>

  1. 属性的注入: 也可采用注解的写法实现.

//无需提供属性的get/set封装方法实现注入.

@Resource(name=”对象名”) //根据对象名称进行spring容器查找,并注入.

Private BanJi bj1;

@Autowired //根据类型进行spring容器查找,找到指定类型对象,直接注入.

Private BanJi bj1;

 

 

案例:   ioc + di 实现以下功能.

1.采用spring容器完全配置的写法实现分层开发与调用.

2.采用spring容器注解的写法实现分层开发与调用.

 

  • AOP技术:

面向切面概述:

切面的原理: 将  业务操作 与  安全,日志,事务 结合使用的过程称为面向切面编程.

静态代理: 是一种编程方法. 对原有功能进行功能增强.

动态代理: 就是将代理类与代理功能进行拆分编写的一种方式.

方式一:

根据jdk的动态代理接口实现 : InvocationHandle实现动态代理.

Object    o1 =     Proxy.newProxyInstance();

方式二: spring默认切面使用方式.

Cglib插件实现的动态代理.

 

 

切面的一些概念:

目标类: 用户需要调用的业务功能类.类中:有目标方法.

切面:  代理类.

通知:  代理类中额外功能.分类: 前置,后置,环绕,返回值,异常处理等.

切入点: 代理类明确 代理谁的 规则.

织入: 将代理功能 + 目标功能 组织到一起.

 

第一个AOP 程序的实现:

2.1:实现方式一,基于applicationContext.xml核心配置实现.

案例: 实现service 新增用户实现事务的控制.

步骤:

1.面向切面的AOP技术,需要额外的补充jar.

aspectjrt.jar / aspectjweaver.jar

        cglib-nodep-2.1_3.jar/aopalliance.jar

 

2.编写目标类与目标方法.

3.编写切面 , 和切面中的通知.

4.在spring容器中,将目标与切面进行织入.注:织入时,指定切入点.

5.测试访问目标类中的目标方法.是否进行增强成功.

 

 

 

2.2:实现方式二,基于注解实现.aop动态代理.

 

 

 

 

  • Spring框架与hibernate 框架的整合:

 

1.Spring框架与jdbc实现整合:

1.1: 引用spring的jar + 驱动包 + dbcp数据源,pool.jar.

1.2: 数据源对象的创建:  交给spring容器完成.

<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">

//配置四个连接属性...

</bean>

1.3: 如何编写dao层(核心: 需要根据dataSource进行增删改查).

private JdbcTemplate jdbcTemplate;

 

@Autowired

public void setDataSource(DataSource dataSource){

this.jdbcTemplate = new JdbcTemplate( dataSource);

}

 

增删改查: this.jdbcTemplate.update() /queryForObject() / query()...

 

1.4:编写测试类:测试使用.

3.Spring与Hibernate框架整合使用:

 

3.0: 集成spring与hibernate,将所有jar包进行引入.

spring+ hibernate +(spring-hibernate)+ dbcp.jar,pool.jar,驱动.jar

 

3.1: 如何控制数据库的连接.dataSource --->  sessionFactory.

 

3.2: 如何让dao层操作数据库.

方式一:dao层继承父类 : HibernateDaoSupport.

方式二:在spring容器中对dao层进行sessionFactory工厂属性的注入.

 

 

3.2: 如何给service层增加事务控制.

在spring容器中通过事务管理器,创建事务通知. 通过面向切面编程进行动态代理使用.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值