目录

Spring框架

@Configuration :将当前类标识为配置类

@Test :测试类

@Component : 将当前的类,交给Spring容器管理, 对象的创建是由Spring通过反射机制自动创建对象--如果不指定则默认就是类名首字母小写

@Component(“xxxxx”) 给对象指定key的名称

@ComponentScan(“com.jt”) 包扫描的注解 使Spring注解有效

@Override :指重写后的属性或是方法

@Bean :将自己方法的返回值交给Spring容器管理

@Scope("singleton") 默认值 单例模式        @Scope("prototype") 多例模式

@Lazy :指的是懒加载

多例与懒加载的关系

Spring对象生命周期

1.@PostConstruct 在对象创建之后立即调用---初始化

2.创建对象

3.使用对象

4.@PreDestroy 对象消亡时 进行调用---销毁

依赖注入(Dependency Injection,简称DI)

@Autowired注解

@Autowired@Qualifier("cat")  该注解不能单独使用,必须配合@Autowired一起使用,根据key进行注入@Resource(name = "cat")  功能上说:@Autowired +@Qualifier("cat")  只需了解,不常用

SpringMVC

层级代码结构:MVC设计思想--(一种思想)

@Controller:控制层 Controller 与前端页面交互的.@Service:业务层 Service 编辑业务逻辑.@Repository:持久层 Mapper 实现数据库的相关操作 暂时:后期不用MVC > 三层代码结构!!!        指的是一个项目最基本的要有三层代码结构                         视图前端 & java程序 & 数据库

@Value注解 :可以直接为基本类型赋值和String类型,然后打印输出可以显示出@value("值")中的值

@Repository  --Spring中可以理解为@Component的派生品,可以被@ComponentScan扫描到

@PropertySource(value = "classpath:/user.properties",encoding = "utf-8")--固定写法,value="classpath",/user.properties表示配置文件,encoding="utf-8"中文放乱码

@ResponseBody //将返回值转化为JSON串 使用最多!!!

@RequestMapping--是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Controller //将类交给SpringMVC管理

@ResponseBody //当前类中的所有方法 都返回JSON串

@RestController // = @Controller + @ResponseBody

@CrossOrigin --- 允许跨域 主要解决跨域问题

User转化为JSON串 @ResponseBody

 JSON串转化为User @RequestBody

@RequestMapping可以支持任意类型的请求. 但是这样的写法不安全.           改进: 只能接收固定类型的请求              @PostMapping("/saveUser")              @GetMapping              @PutMapping              @DeleteMapping

@SpringAOP

before通知 目标方法执行前执行

前置通知afterRrturning 通知 目标方法执行之后执行

后置通知afterThrowing 通知 目标方法报错时执行

异常通知after通知 目标方法执行之后 最后执行

最终通知around通知 目标方法执行前后都要执行

环绕通知

其中前四种通知只能作为日志的形式存在,环绕通知可以更改数据,功能更为强大

@Aspect //定义切面类

@Component //将切面交给Spring容器管理

@Order(1) //如果是多个切面, 可以实现排序 数字越小越靠前

@Order(2) //如果是多个切面, 可以实现排序 数字越小越靠前

Pointcut(切入点): JoinPoint的集合,是程序中需要注入Advice的位置的集合,指明Advice要在什么样的条件下才能被触发,在程序中主要体现为书写切入点表达式。

@Pointcut("bean(userServiceImpl)")                   //通过bean的ID匹配@Pointcut("within(com.jt.service.UserServiceImpl)")  //通过类型匹配@Pointcut("execution(* com.jt.service..*.*(..))")    //通过方法参数匹配@Pointcut("@annotation(com.jt.anno.MyAnnotation)")     //注解匹配

@Springboot

springBoot将繁琐的配置封装到某些jar包中. 该jar包中的文件已经完成了配置.引入即可使用.只需要少量的配置就可以获取其功能的方式 叫做 “开箱即用”

加载lombok 插件

 @Data  重写了getting  setter  tostring  equals和hashcodu  方法

@Accessors(chain = true)    重写了 set方法, 可以实现链式加载

@NoArgsConstructor  无参构造方法

@AllArgsConstructor   全参构造方法

@SpringBootTest:SpringBoot为了简化程序测试过程,springBoot针对于测试方法,开发了一个注解        规则说明:1. 当运行@Test注解标识的方式时,SpringBoot程序启动2. SpringBoot启动,内部Spring容器启动.基于IOC管理对象,DI注入对象3. 可以在任意的测试类中注入想要的对象        注意事项: 测试类的包路径,必须在主启动类的同包及子包中编辑


Spring框架

@Configuration :将当前类标识为配置类

类似于以前的xxx.xml配置文件

@Test :测试类

在此注解下所写的是测试类,相当于main方法,可以检查代码是否正常运行

Scanner 只能在main方法里可以正常运行,@Test里无法运行

@Component : 将当前的类,交给Spring容器管理, 对象的创建是由Spring通过反射机制自动创建对象--如果不指定则默认就是类名首字母小写

@Component(“xxxxx”) 给对象指定key的名称

@ComponentScan(“com.jt”) 包扫描的注解 使Spring注解有效

@Override :指重写后的属性或是方法

@Bean :将自己方法的返回值交给Spring容器管理

@Scope("singleton") 默认值 单例模式        @Scope("prototype") 多例模式

@Lazy :指的是懒加载

多例与懒加载的关系

说明: 只要对象是多例模式,则都是懒加载! 在单例模式中控制懒加载才有效
规则说明:
lazy true lazy false

@Scope(“singleton”) //默认值 单例模式   懒加载 有效 立即加载
@Scope(“prototype”)//默认值 多例模式  懒加载 无效 懒加载

Spring对象生命周期

一个对象从创建到消亡,可以划分为四个阶段,如果需要对程序进行干预.则可以通过周期方法进行干预

1.@PostConstruct 在对象创建之后立即调用---初始化

2.创建对象

3.使用对象

4.@PreDestroy 对象消亡时 进行调用---销毁

依赖注入(Dependency Injection,简称DI)

@Autowired注解

说明: 在对象中如果需要使用属性注入.一般使用@Autowired注解.
功能: 可以将Spring容器中的对象,自动注入到属性中.
注入方式:
1. 默认按照类型注入. 如果注入的属性是接口,则自动注入实现类
2. 按照名称注入(key). 一般不用

重要前提: 如果需要依赖注入.则对象必须交给Spring容器管理

@Autowired
@Qualifier("cat")  该注解不能单独使用,必须配合@Autowired一起使用,根据key进行注入
@Resource(name = "cat")  功能上说:@Autowired +@Qualifier("cat")  只需了解,不常用

SpringMVC

层级代码结构:MVC设计思想--(一种思想)

@Controller:控制层 Controller 与前端页面交互的.
@Service:业务层 Service 编辑业务逻辑.
@Repository:持久层 Mapper 实现数据库的相关操作 暂时:后期不用
MVC > 三层代码结构!!!        指的是一个项目最基本的要有三层代码结构                         视图前端 & java程序 & 数据库

@Value注解 :可以直接为基本类型赋值和String类型,然后打印输出可以显示出@value("值")中的值

@Repository  --Spring中可以理解为@Component的派生品,可以被@ComponentScan扫描到

@PropertySource(value = "classpath:/user.properties",encoding = "utf-8")--固定写法,value="classpath",/user.properties表示配置文件,encoding="utf-8"中文放乱码

@ResponseBody //将返回值转化为JSON串 使用最多!!!

@RequestMapping--是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Controller //将类交给SpringMVC管理

@ResponseBody //当前类中的所有方法 都返回JSON串

@RestController // = @Controller + @ResponseBody

@CrossOrigin --- 允许跨域 主要解决跨域问题

User转化为JSON串 @ResponseBody

 JSON串转化为User @RequestBody

@RequestMapping可以支持任意类型的请求. 但是这样的写法不安全.
           改进: 只能接收固定类型的请求
              @PostMapping("/saveUser")
              @GetMapping
              @PutMapping
              @DeleteMapping

@SpringAOP

before通知 目标方法执行前执行

前置通知
afterRrturning 通知 目标方法执行之后执行

后置通知
afterThrowing 通知 目标方法报错时执行

异常通知
after通知 目标方法执行之后 最后执行

最终通知
around通知 目标方法执行前后都要执行

环绕通知

其中前四种通知只能作为日志的形式存在,环绕通知可以更改数据,功能更为强大

@Aspect //定义切面类

@Component //将切面交给Spring容器管理

@Order(1) //如果是多个切面, 可以实现排序 数字越小越靠前

@Order(2) //如果是多个切面, 可以实现排序 数字越小越靠前

Pointcut(切入点): JoinPoint的集合,是程序中需要注入Advice的位置的集合,指明Advice要在什么样的条件下才能被触发,在程序中主要体现为书写切入点表达式。

@Pointcut("bean(userServiceImpl)")                   //通过bean的ID匹配
@Pointcut("within(com.jt.service.UserServiceImpl)")  //通过类型匹配
@Pointcut("execution(* com.jt.service..*.*(..))")    //通过方法参数匹配
@Pointcut("@annotation(com.jt.anno.MyAnnotation)")     //注解匹配

@Springboot

springBoot将繁琐的配置封装到某些jar包中. 该jar包中的文件已经完成了配置.引入即可使用.只需要少量的配置就可以获取其功能的方式 叫做 “开箱即用”

加载lombok 插件

 @Data  重写了getting  setter  tostring  equals和hashcodu  方法

@Accessors(chain = true)    重写了 set方法, 可以实现链式加载

@NoArgsConstructor  无参构造方法

@AllArgsConstructor   全参构造方法

@SpringBootTest:SpringBoot为了简化程序测试过程,springBoot针对于测试方法,开发了一个注解
        规则说明:
1. 当运行@Test注解标识的方式时,SpringBoot程序启动
2. SpringBoot启动,内部Spring容器启动.基于IOC管理对象,DI注入对象
3. 可以在任意的测试类中注入想要的对象
        注意事项: 测试类的包路径,必须在主启动类的同包及子包中编辑