当前位置:   article > 正文

Spring框架

spring框架

spring框架:负责宏观调控,负责整合其他的第三方的框架

SpringMVC框架: 主要负责前后端数据的交互

Mybatis框架/MybatisPlus框架:持久层框架,简化JDBC操作数据库的方式,提高效率

SpringBoot框架: 采用了更加简化的方式封装了之前的框架,让程序更简单

 IOC介绍

IOC是一种控制反转的设计思想,由spring容器管理对象的生命周期,降低代码的耦合性

将所有的对象都交给spring容器管理,容器负责对象的注入

 DI介绍:Dependency Injection  依赖注入

spring容器替你管理一系列需要的类,前提是你需要将这些类表示交给容器进行管理才可,然后在你需要的时候不用自己去定义,容器就会自动帮你进行实例化

实现IOC思想需要DI进行注入。

注入的方式最常用的就是@Aurowired注解,只要加上注解即可,且如果对象是接口,会自动注入实现类。如果对象过多 可以使用@Qualifier("cat")注解进行选择特点的类。且必须与@Aurowired注解同时出现才能使用。

1.spring容器管理对象:

1.1 使用XML形式配置文件管理对象。基本不咋用,一般都是注解使用更方便

Bean 元素:使用该元素定义需要spring容器管理对象

id属性:       全局唯一变量一般类型首字母小写

class属性:  class的路径信息,需要写全名

1.2 使用注解的形式进行配置管理的对象

@Bean  使用此注解进行标识是一个要提交给spring容器进行管理的对象

定义一个类,将类在配置类中进行注解@Bean 此方法还是自己进行了创建定义

1.3使用注解@component的形式进行配置管理对象(一般多用注解的形式)

@component定义在类上表示此类是一个提交给容器管理的对象。会自动实例化。

 

1.4使用@Controller @Service @Repository 形式进行配置管理对象,此方法降低了耦合度 每个表示不同的业务区域

2.定义spring配置类

 2.1 一个完整的项目需要一个专门的配置类进行管理项目内容

使用@Configuration将一个类定义为配置类,此类中专门用来各种配置

使用@ComponentScan 配置需要扫描文件的路径,将使用了@Component注解的类自动实例化

配置类中可以添加其他需要的配置注释,前两个是必用的注释

3.创建spring容器,通过容器得到内容

DI依赖注入 面向接口

定义一个接口,进行实现类。使用注解@Autowired进行依赖注入。依赖注入如果是个接口,则会将实现类自动绑定到接口上进行使用。

当一个接口有多个实现类时们可以通过@Qualifier进行选择某个类

4.工厂模式

通过工厂模式进行创建对象(万能的)可以将抽象类进行容器注入,工厂模式需要实现类 FactoryBean<Calendar(日历)>

因为是实现类所有会自动重写 getObject()   和  getObjectType() 两种方法

 getObject()  返回类型对象

 getObjectType()  返回字节码

生命周期函数自动调用

@PostConsruct 初始化注解  会在执行时进行初始化

@PreDestroy  销毁注解

单例与多例的注解@Scope

懒加载@Lazy

懒加载只会在单例模式中有效,多例模式无效。多例模式默认就是懒加载

@Lazy在使用时才会创建对象。

当用户会需要一些特殊的拦截,并且这些链接创建的时间非常长时,可以时间懒加载。

AOP切面编程 

高效创建代理对象,通过代理解决实际问题。

1.首先定义一个切面:使用注解@Aspect 标识为一个切面

再将切面提交给spring容器进行管理

 2.在配置类中使用注解@EnableAspectJAutoProxy启动AOP

3.使用注解@Pointcut进行确定需要代理的对象

有四种方法进行确定代理的类

3.1使用bean方式 bean                               指定单独的类,可以添加多个  xx,xx

3.2使用自定义注解的方式  @annotation   通过用户自定义注解进行判断

3.3使用包路径的方式  within                      通过包路径进行筛选。

3.4使用方法名的方式  execution                通过 返回值类型  包名 类名 的方法 进行判断。

 4.使用通知注解执行

常用通知有五种:

前置通知:@Before  在执行前输出

后置通知:@AfterReturning   在执行后一个输出

最终通知:@After   最后输出

异常通知:@AfterThrowing   报错异常输出

环绕通知:@Around    最常用!!可控制!! 前后都可以输出

5.注意事项:

当有两个或者多个AOP时,可以使用@Order注解进行排序输出!!

spring默认是JDK代理,想要更改为CGLIB代理 需要在启动注释中添加对应代码

 SpringBoot默认使用的是CGLIB代理。如果需要更改为JDK代理则需要修改配置文件即可

MVC:是一种设计思想,降低代码的耦合性,是页面与后端的交互思想,层级代码结构,为了很好的实现MVC思想,所以后端代码也应该分层 

View 视图层  Model业务层  Control控制层

分层说明:都可以直接提交给容器进行管理

1.控制层   Controller  与前端页面进行交互的        @Controller     

2.业务层   Service      编辑业务逻辑                      @Service

3.持久层   Mapper      实现数据库的相关操作        @Repository

MVC   >    三层代码结构    

与前端进行交互:前后的Axios交互

1.使用注解配置可以进行交互的内容

使用@Controller                           注解交给容器管理

使用@ResponseBodt                  将此类进行定义JSON转换

上俩个可以简化使用:@RestController注解        等于二合一的注解

使用@CrossOrigin                       解决跨域的问题

 2.定义网页端口号后的名字

使用注解@RequestMapping   默认为get 方法

方法类型有四种:

@GetMapping                                  限制为get方法

@DeleteMapping                             限制为delete方法

@PostMapping                                限制为post方法

@PutMapping                                  限制为put方法

Lombok 包 添加辣椒文件

关于Lomnok使用说明:

使用时需要添加jar包和安装插件 Linux服务器项目中 不需要添加

在编译器有效

 定义封装的属性在前端进行输入

使用注解@Data 可以自动生成set  get tostring 等方法

使用注解@AllArgsConstructor 添加全参构造

使用注解@NoArgsConstructor  添加无参构造

使用注解@Accessors(chain = true) 可以重写set方法 并且进行链式加载

以上为POJO文件标配注解  且必须进行实现类Serializable 序列化

3.在html中添加Axios文件。

并使用axios.get().then() 进行执行

 SpringBoot 开箱即用原理:用少量配置实现大量的功能

SpringBoot为了简化程序的测试过程,springboot针对的测试方法开发了一个注解

@SPringbootTest注解

规则说明 :

当运行@Test注解表示的方式时,程序启动

Springboot启动,内部spring容器启动  基于IOC管理对象,DI注入对象

可以在任意的测试类中注入响应的对象

@Value  赋值

使用@PropertySource注解确认文件位置 

定义properties文件 并将name属性赋值

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.1.1.RELEASE</version>
  10. <relativePath/>
  11. </parent>
  12. <groupId>com.lianlianpay</groupId>
  13. <artifactId>LLP-ACCP-Java</artifactId>
  14. <version>1.0-SNAPSHOT</version>
  15. <properties>
  16. <maven.compiler.source>8</maven.compiler.source>
  17. <maven.compiler.target>8</maven.compiler.target>
  18. </properties>
  19. <dependencies>
  20. <!-- 支付宝支付依赖-->
  21. <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
  22. <dependency>
  23. <groupId>com.alipay.sdk</groupId>
  24. <artifactId>alipay-sdk-java</artifactId>
  25. <version>4.35.79.ALL</version>
  26. </dependency>
  27. <!--Swagger-->
  28. <dependency>
  29. <groupId>io.springfox</groupId>
  30. <artifactId>springfox-swagger2</artifactId>
  31. <version>2.7.0</version>
  32. </dependency>
  33. <!--Swagger ui-->
  34. <dependency>
  35. <groupId>io.springfox</groupId>
  36. <artifactId>springfox-swagger-ui</artifactId>
  37. <version>2.7.0</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>commons-codec</groupId>
  41. <artifactId>commons-codec</artifactId>
  42. <version>1.11</version>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.apache.httpcomponents</groupId>
  46. <artifactId>httpcore</artifactId>
  47. <version>4.4.10</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.apache.httpcomponents</groupId>
  51. <artifactId>httpclient</artifactId>
  52. <version>4.5.3</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>com.alibaba</groupId>
  56. <artifactId>fastjson</artifactId>
  57. <version>1.2.29</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.projectlombok</groupId>
  61. <artifactId>lombok</artifactId>
  62. <version>1.18.4</version>
  63. <scope>provided</scope>
  64. </dependency>
  65. <!-- springboot -->
  66. <dependency>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-starter-web</artifactId>
  69. </dependency>
  70. <!--thymeleaf 模板依赖-->
  71. <dependency>
  72. <groupId>org.springframework.boot</groupId>
  73. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  74. </dependency>
  75. <dependency>
  76. <groupId>org.springframework.boot</groupId>
  77. <artifactId>spring-boot-devtools</artifactId>
  78. <scope>runtime</scope>
  79. <optional>true</optional>
  80. </dependency>
  81. <dependency>
  82. <groupId>org.springframework.boot</groupId>
  83. <artifactId>spring-boot-configuration-processor</artifactId>
  84. <optional>true</optional>
  85. </dependency>
  86. </dependencies>
  87. <build>
  88. <plugins>
  89. <plugin>
  90. <groupId>org.springframework.boot</groupId>
  91. <artifactId>spring-boot-maven-plugin</artifactId>
  92. <configuration>
  93. <excludes>
  94. <exclude>
  95. <groupId>org.projectlombok</groupId>
  96. <artifactId>lombok</artifactId>
  97. </exclude>
  98. </excludes>
  99. </configuration>
  100. </plugin>
  101. </plugins>
  102. </build>
  103. </project>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/384668
推荐阅读
相关标签
  

闽ICP备14008679号