Spring【复习】

什么是Spring?

Spring是一个分层的javaSE/EE full-stack(一站式)轻量级开源的管理框架。可以解决企业级应用开发的业务逻辑层和其他各层的耦合问题,解决企业级应用开发的复杂性。它为企业级开发提供了丰富的功能,但这些功能的底层都依赖于它的两个核心特性,IOC(Inversesion of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)

Spring的优点?
  • 方便解耦,简化开发,Spring就是一个大工厂,可以将所有对象创建和依赖关系维护交给Spring管理,避免硬编码所造成的过度耦合。

  • Aop编程的支持。Spring提供面向切面编程,可以方便实现对程序进行权限拦截,运行监控等功能。

  • 声明式事务的支持,只需要通过配置就可以完成对事务的管理,而无需手动编程,提高开发效率和质量。

  • 方便程序的测试,Spring对junit4支持,可以通过注解方便测试Spring程序。

  • 方便集成各种优秀框架,Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Stuts、Hibernate、MyBatis、Quartz)的直接支持。

  • 降低了JavaSE API的使用难度,Spring对javaEE开发中非常难用的一些APl(JDBC、Java Mail、远程调用等),都提供了封装,使这些API应用难度大大降低。

分层

提供三层结构:控制层、业务层、数据访问层(持久层,集成层)

一站式(Spring)

控制层:SpringMVC

持久层:JDBC Template

业务层:Spring的事务管理,备案管理

什么是耦合?

在开发中,对象之间的耦合度指的是对象之间的依赖。对象之间的依赖越高耦合越高,维护成本越高,因此设计时应使类之间的耦合最小。

什么是IOC?

IOC-Inversion of Control “控制反转”,将设计好的对象就交给spring创建实例,而不是由我们编写代码去new了。IOC本质是个容器,是个对象工厂,通过读写配置 文件,在通过它用反射来完成对象的创建。

Spring提供的IOC容器的两种实现方式(接口):

BeanFactory,低级容器,通过只通过注册(put)、获取(get)两个功能。

ApplicationContext,高级容器,继承了多个接口,具备更多的功能。例如资源的获取,支持多种消息(例如JSP tag的支持),工具级别的支持等。

什么是DI?

DI-Dependency Injection“依赖注入”,组件之间依赖关系由容器运行期决定。

什么是AOP?

AOP-Aspect Oriented Programing“面向切面编程”,在不影响类源代码的情况下,给对象增强功能,例如给业务层加日志,或者给持久层操作方法加事务都可以使用AOP统一进行维护。

Java中的代理模式

代理模式是常用的Java模式之一,分为静态代理和动态代理。

代理类主要负责为委托类预处理消息,过滤信息、把信息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,代理类的对象本身并不是真正实现服务,而是通过调用委托类对象的相关方法,来提供特定的服务。

Cglib动态代理

Cglib-(Code Generation Library)开源项目,是一个高性能,高质量的Code生成类库,可以在运行期扩展Java类与实现接口(final(常量)类不能使用Cglib来代理、没有实现接口的不能使用代理),Cglib是针对类来实现代理的,原理是对指定的目标类生产一个子类,并覆盖其中方法实现增强。

Spring注解开发
Spring原始注解

注解

说明

@Component

使用在类上用于实例化Bean

@Controller

使用在web层类上用于实例化Bean

@Service

使用在service层类上用于实例化Bean

@Repository

使用在dao层类上用于实例化Bean

@Autowired

使用在字段上用于根据类型依赖注入

@Qualifier

结合@Autowired一起使用用于根据名称进行依赖注入

@Resource

相当于@Autowired+@Qualifier,按照名称进行注入

@Value

注入普通属性

@Scope

标注Bean的作用范围

@PostConstruct

使用在方法上标注该方法是Bean的初始化方法

@PreDestroy

使用在方法上标注该方法是Bean的销毁方法

Spring新注解

注解

说明

@Configuration

用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解

@ComponentScan

用于指定 Spring 在初始化容器时要扫描的包。

@Bean

使用在方法上,标注将该方法的返回值存储到 Spring 容器中

@PropertySource

用于加载.properties 文件中的配置

@Import

用于导入其他配置类

@MapperScan

扫描mapper层,会帮我们创建mapper接口的代理对象

@Transactional

可以用在类上或方法上,表示该类的方法或者某个方法启动事务管理

@EnableTransactionManagement

启用注解式事务

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值