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属性赋值

 

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>com.lianlianpay</groupId>
    <artifactId>LLP-ACCP-Java</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>


        <!--        支付宝支付依赖-->

        <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.35.79.ALL</version>
        </dependency>

        <!--Swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!--Swagger ui-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.29</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <scope>provided</scope>
        </dependency>
        <!-- springboot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--thymeleaf 模板依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值