Spring工程搭建
先创建一个项目,我们使用的是idea,安装确认好相应的jdk,创建maven工程
在setting中设置好maven的安装路径
引入spring基础包spring-core、spring-beans、spring-context、spring-expression,
创建一个配置文件和Spirng框架通信
最后编写接口类代码测试
项目常用后端代码结构
项目常用后端代码主要结构为Controller(流程控制层)+Service(业务逻辑层)+Dao(数据操作层)
Controller 接收用户的请求,再把它分配到它需要调的service里
Service 所有请求先到controller里面,然后再去找它要哪个服务,再创建一个对应的实例
Dao 相当于是在Services里调的是一个接口
if判断和三目运算符
if结构:
if (判别式) {
代码1
} else {
代码2
}
结果为真执行1,为假执行2
三目运算符:
结构:判别式 ? 代码1 : 代码2;
结果为真执行1,为假执行2
if表达式比三目表达式更简单一些
Spring IOC & DI
ioc(控制反转)创建对象的控制权进行转移,是面向对象编程中的一种设计模式
DI(依赖注入) 其实就是IOC的一种类型
项目常用后端代码结构缺点:耦合性太强,扩展性太低
使用spring的ioc解决,使用更加方便,可用性也更强
而使用ioc(xml)模式有太过复杂,维护成本过高,可使用注解形式解决
@Component:一般用于通用组件类上使用的注解
@Service:一般用于业务逻辑层上使用的注解
@Controller:一般用于流程控制层上使用的注解
@Repository:一般用于数据持久层上使用的注解
代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问
开闭原则:可以在客户端和目标对象之间起到中介的作用
增加功能:在项目开发中我们没有加入缓冲,日志这些功能,后期想加入,我们就可以使用代理来实现
代理又分为静态代理和静态代理
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。
动态代理:在程序运行时,运用反射机制动态创建而程。
SpringAOP
新建Maven项目名为“spring-aop“,设置好Maven版本、配置文件以及Maven仓库
创建一个工具类,目的是用于管理数据库的事务,提供事务的开启,提交,回滚等操作;
创建一个代理处理器类,目的是生成转账实现类的代理对象,对转账的业务方法提供增强,主要是在数据操作之前,和操作之后干点事,嘿嘿嘿;
在 Spring 的配置文件中,通过 xml 文件的标签实例化管理事务的工具类和生成代理对象的处理器类。
自定义代理模式代码编写过于臃肿
侵入性比较强,代码不够优雅
控制事务的实现过于繁琐
Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象.。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程