IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring内涵 -> 正文阅读

[Java知识库]Spring内涵

Spring:

spring依赖:

<?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>

    <groupId>org.example</groupId>
    <artifactId>Spring9_6SpringProjectFirst</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
<!--        SpringIoc(Start)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.2.RELEASE</version>
        </dependency>
<!--        SpringIOC(End)-->
<!--        SpringAop(Start)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
<!--SpringAop(End)-->
<!--        SpringMybatis(Start)-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>
<!--        数据库连接工具-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
<!--        SpringMybatis(End)-->
<!--        SpringMvc(Start)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.13.RELEASE</version>
        </dependency>
<!--        SpringMvc(End)-->
    </dependencies>


</project>

Ioc

解耦:当我们持久化Dao的时候,我们按传统的创建对象形式在服务层Service中创建我们是不是要new UserDao(),如果我们使用loc container,把控制权交给应用程序去控制,我们只要使用DI(依赖注入)就可以直接使用。
Bean:就是被private加上set/get方法修饰的Pojo实体类
loc(控制反转):这些Bean的创建工作,即由用户管理Bean转变为框架管理Bean,这个就叫控制反转 - Inversion of Control (IoC)。
如果我们没使用loc,那么我们将自己把Bean添加到容器中
实体类:
在这里插入图片描述

采用xml的方式把实体类添加到容器中(xml,java->configuration,注解):
在这里插入图片描述

通过ClassPathXmlApplicationContext来初始化容器对象,并通过getBean来获取到该Bean对象,通过对象来调用方法。
在这里插入图片描述

有了Spring框架,可以将原有Bean的创建工作转给框架, 需要用时从Bean的容器中获取即可,这样便简化了开发工作。
DI注入:
我们可以在使用Springconfig的xml,通过set方法,构造器和p空间来注入到Bean中。
在这里插入图片描述

Aop(切面编程),其实就是把aspect框架的一部分分解了下来了,添加到spring中命名为AOP,也就是添加配置,在一个类中的方法中在前面后面添加新的方法before(之前)after(之后),
操作步骤:
1:使用Springconfig的xml把要插入的bean通过xml生成一个Bean添加到Ioc容器中,并通过

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

<bean classs="com.SpringAop.TestStudent.Student" id="Student"></bean> 要被切入的实体类
<bean class="com.SpringAop.TestAop.TestAop" id="TestAop"></bean>   要插入方法的实体类
<aop:config>
<aop:pointcut  id="Student1" expression="exectuion(* com.SpringAop.TestStudent.Student.show(String))"></aop:pointcut> *表示该方法的返回值 切入源
	<aop:aspect>      切入的方法
			<aop:before method="before" pointcut-ref="Student1"></aop:before>
			<aop:after methode="after" poincut:ref="Student1"></aop:after>
	</aop:aspect>
</aop:config>

Student实体类:
在这里插入图片描述
要切入的方法:
在这里插入图片描述main方法:在这里插入图片描述mybatis:
xml中创建数据库连接参数:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<Configurtion>
<environments default="development">
	<environment id="development"></environment>
</environments>
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POLED">
<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
</dataSource>
</Configurtion>

我们用配置类来连接数据库:
Spring-Mybatis中已经对我们的连接进行了操作,所以我们只需要返回一个SqlSessionTemplate

package com.SpringMybatis.Utility;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configurtion
@MapperScan(basePackages="com.SpringMybatis.Mapper")   //扫描mapper接口
public class JdbcUtility {
    @Bean
    public SqlSessionTemplate JdbcTemplate() throws Exception{
        SqlSessionFactory sqlbuild = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-configuration.xml"));//获取xml中配置的sql连接参数
        return new SqlSessionTemplate(sqlbuild);
    }
    }

添加Mapper接口:

@Mapper
public interface TestMapper{
	   @Select("select * from test1 where t2=1") //通过注解传递sql语句
    List<Student> getname();
}

实体类:

package com.SpringMybatis.POJO;

import java.io.Serializable;

public class Student implements Serializable {
    private String username;
    private String password;
    private  int age;
    private  int t2;

    public String getUsername() {
        return username;
    }

    @Override
    public String toString() {
        return "Student{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", t2=" + t2 +
                '}';
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getT2() {
        return t2;
    }

    public void setT2(int t2) {
        this.t2 = t2;
    }

    public Student(String username, String password, int age, int t2) {
        this.username = username;
        this.password = password;
        this.age = age;
        this.t2 = t2;
    }

    public Student() {
    }
}

在main中执行程序:

public static void main(String[] args){
	AnnotationConfiglicationContext context=new AnnotationConfiglicationContext(JdbcUtility .class);
	TestMapper  mapper=context.getBean(TestMapper.class);
	List<Student> list=mapper.getname();
	System.out.println(list);
}

Mysql事物:

mysql:
第一范式:列不可分解
第二范式:唯一标识
第三范式:引用主键
事物的特性:
原子性:事物代码要么都会被运行,要么都不会被运行
一致性:事物的状态都是一样的
隔离性:事物和其他事物之间是隔离开来的
持久性:表示事物提交后,无论系统发生什么错误,数据都不会变
事物的隔离级别:
读未提交:事物还没有提交,而其他事物会读取该事务没有提交的缓存的数据,这就是**脏读**

读已提交:就是只能读已经提交了的数据。事件A读取初始数据,在这个间隔中事件B也开始读取了初始数据,事件A对初始数据进行了操作,但是还没有提交,因此事物B是获取不到事件A操作后的数据,导致事件B还是查询的是初始数据,所以当事件A和事件B读取出来的数据就会不一样,这就造成了**虚读**。

可重复读:这是Mysql的事物隔离级别,就是在A事物读取的时候,B事物也去读取,但是B事物并不能对数据进行更新,但是可重复读,有个问题就是,只是禁用了update操作,并没有禁用insert,所以这就会造成**幻读**

串行化:事物的每一次读取都要等待前一个事物的结束才会执行,会导致效率低
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:51:23  更:2022-09-15 01:52:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:57:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码