spring开发介绍

15 篇文章 0 订阅

spring简化开发的四个基本策略
1.基于POJO的轻量级和最小侵入性编码
2.通过依赖注入和面向接口松耦合
3.基于切面和惯性进行声明式编程
4.通过切面和模板减少样板式代码

spring源码环境搭建运行
首先安装gradle,添加环境变量
然后cmd打开spring目录,运行gradle.bat开始构建,在网络环境好的情况下当出现build success提示之后说明gradle构建成功,然后使用intellij import spring项目,注意事项import而不是open

spring注解:
模式注解
模式注解是一种用于声明在应用中扮演“组件”角色的注解
例如 Spring Framework 中的 @Repository 将标注在类上 ,可以用于扮演仓储角色。@Component注解 是一种由 Spring 容器托管的通用模式组件,任何被 @Component 标注的类均为组件扫描的候选对象。类似地,凡是被 @Component 元标注的注解,如 @Service ,其标注的类均,也会被视作组件扫描的候选对象

注解的派生性
由于Java语言规定,Annotation不允许继承,没有类派生子类的特性,因此Spring采用元标注的方式实现注解之间的派生
Component注解的派生性原理
spring的ClassPathBeanDefinitionScanner类在扫描的时候会识别使用注解@Component进行元标注的注解,注解的核心处理类为AnnotationMetadataReadingVisitor,其采用递归的方式查找元注解。并将其识别为spring的组件,这就是component的派生性的底层原理支持

@AliasFor注解
@AliasFor注解声明了属性的别名
@AliasFor注解只能标注目标注解的属性
例如:

@AliasFor("cacheNames")
String[] value() default {};
//value属性的别名是CacheNames
@AliasFor(
    annotation = ComponentScan.class,
    attribute = "basePackages"
)

String[] scanBasePackages() default {};
此注解的scanBasePackages属性的值相当于注解@ComponentScan的basePackages属性

spring异常处理:
当程序出现异常的时候我们需要将其转成响应,spring提供了多种方式实现这一需求
1.特定的异常会自动转成响应码
2.异常上可以添加@ResponseStatus注解将其映射成某一个http状态码
3.在方法上添加@ExceptionHandler注解,来处理异常,当我们想在响应中不仅仅包括状态码,还要包含错误信息的时候需要这种处理方式

错误的统一处理:
使用@ExceptionHandler注解标注的方法能够处理一个控制器中所有方法的异常,也就是说这个控制器中所有方法执行出错的时候,spring都会委托使用了@ExceptionHandler注解标注的方法来处理错误

错误的全局处理:
上面只是实现了同一个控制器中所有处理器异常,你可能会问了那么有没有方法可以处理应用里面所有方法的异常呢?
从spring3.2开始这是可以实现的,只需要使用控制器通知类
关键就在于一个注解控制器通知注解:@ControllerAdvice
当然最常用的场景就是异常的全局处理
参考货骑士中的MyExceptionHandler类,该类负责全局异常捕获和处理

传递模型数据到视图中:
模型:Model
上面的方法中我们注意到有一个参数Model,这个模型实际上就是一个Map,Spring会将其传递给视图,在视图中也就是html中我们可以通过${key}来获取模型中的数据

但是视图实际上并不只是html,也可能是jsp文件,那么在jsp中如何访问模型中的数据呢?
模型数据会作为请求属性被放置到请求request中,同样可以通过${key}来获取模型中的数据

@RewuestMapping注解可以接收路径中的变量
@RequestMapping("/community_update/{communityId}")
public String communityUpdate(@PathVariable Integer communityId, Model model) {
return “redirect:/”+PREFIX + “community_edit.html”;

如上代码中接收了一个communityId的变量,然后在方法参数上使用@PathVariable注解声明接收这个变量@PathVariable注解的value属性可以声明其接收那个请求路径中的变量

这种方式类似于七牛的图片url

注意上面返回的字符串中有redirect:前缀,spring遇到此前缀会知道需要对路径进行重定向处理

如何让自动装配和javaConfig和XML配置混合并合并在一起?

首先:自动装配的时候spring不会在意bean来自哪里,spring会考虑容器中所有的bean

那么javaConfig呢?其不会自动引用所有spring容器中bean,而是需要进行导入
我们可以使用@Import注解来描述这个配置类需要导入那个配置类中提供的bean,例如:

@Configuration
@Import(MybatisPlusConfig.class)
public class MQConfig {

接下来我们就可以在MQConfig中引用MybatisPlusConfig中的bean了

如何让JavaConfig和xml配置同时起作用呢?

@Configuration
@ImportResource("classpath:cd-config.xml")
public class MQConfig {

如上使用@ImportResource注解,我们就可以在MQConfig中引用对应xml配置文件中的bean了

如上在JavaConfig中我们可以通过@Import和@ImportResource来拆分JavaConfig类

如何对xml配置文件进行拆分呢?
我们可以使用标签进行拆分

<import resoune ="ad-config.xml"/>

上面实现了xml中导入其他xml配置文件
那么xml中如何导入javaConfig呢?
可以使用bean标签导入,如下

<bean class="mapper.ScannerConfig">
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值