SpringSpring搭建SpringJdbcTemplateSpring Bean管理Spring结合Mybatis

本文主要是介绍SpringSpring搭建SpringJdbcTemplateSpring Bean管理Spring结合Mybatis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring基础

Spring是什么

Spring是一个轻量级的IOC和AOP的一站式Java开发框架,是为了简化企业级开发而生的

轻量级

框架体积小(核心模块)

IOC

Inversion Of Control (控制反转)缩写为IOC,是由Spring管理对象,而非传统实现中由程序代码直接操控,将创建对象的控制权反转给spring框架

以前在程序中需要对象都是自己new,例如new Student对象

AOP

Aspect Oriented Programming 面向切面编程

将程序中的一些公共的非业务代码分离提取出来,然后在业务代码执行时,给他们横切进来

使用的动态代理的机制实现,在我们业务代码,不显示的调用,但是执行业务代码,会通过代理对象,调用非业务代码

一站式

除了核心的IOC和AOP功能之外,还对数据访问层,web层,都有封装,所以是一站式的

Spring体系结构

在这里插入图片描述

Spring搭建

1.创建一个maven项目,在pom.xml中导入spring的jar包

<!-- spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>

2.在resources文件夹中创建spring.xml文件

编写spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.ff.spring.model.User"> </bean>
</beans>

spring bean管理

Bean对象

由于把对象交给spring管理后,spring会对对象进行功能的增强,所以在spring框架中生成的对象,统一称为Bean对象

叫bean对象是为了区分这个对象是我们自己new的还是spring框架生成的

spring中bean管理有两种方式

1.xml配置方式

 在spring框架中注册需要被spring管理的类使用Bean标签配置需要让spring管理的类id="对象名称",可以在getBean中获得spring生成的对象class="需要让spring管理的类的地址"scope="配置bean的作用域"scope="Singleton" 单例的,在spring框架启动时,就创建对象,而且始终只创建一个对象scope="prototype" 原型的(多例的)  会在每一次获得对象时,创建一个新的对象IOC指的是spring框架创建对象,创建对象的同时,还有一个动作称为依赖注入依赖注入:在创建对象的时候,为对象中属性赋值依赖注入有两种方式:1,通过属性注入,属性的set方法2.通过构造方法注入
-->
<!--<bean id="admin" class="com.george.springpro.model.Admin"><property name="account" value="admin"/><property name="password" value="111"/>
</bean>--><bean id="admin" class="com.george.springpro.model.Admin"><constructor-arg name="account" value="admin"/><constructor-arg name="password" value="111"/></bean><bean id="adminDao" class="com.george.springpro.dao.AdminDao"></bean><bean id="adminService" class="com.george.springpro.service.AdminService"><property name="adminDao" ref="adminDao"></property></bean>

2.注解配置方式

首先要在spring中开启注解方式

<context:component-scan base-package="包名"> </context:component-scan>

注解创建对象

@Component(value=“user”)等同于

@Service

@Repository

以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层使用不同的注解标记

@Scope(value=“prototype”) 原型

@Scope(value=“ singleton ”) 单例

注解方式注入

@Autowired

@Autowired 是 Spring 提供的注解,可以写在字段和 setter 方法上。如果写在字段上,那么就不需要再写 setter 方法。默认情况下它要求依赖对象必须存在,如果允许 null 值,可以设置它的 required 属性为 false。

byType 自动注入

该注解默认使用按类型自动装配 Bean 的方式。

byName 自动注入

如果我们想使用按照名称(byName)来装配,可以结合@Qualifier 注解一起使用。

需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的value 属性用于指定要匹配的 Bean 的 id 值。

JDK 注解@Resource 自动注入

Spring 提供了对 jdk 中@Resource 注解的支持。@Resource 注解既可以按名称匹配 Bean,也可以按类型匹配 Bean。默认按照 ByName 自动注入

byName 注入引用类型属性

@Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配的 Bean 的 id。

注解与XML的对比

注解的优点:

方便,直观,高效

注解的缺点:

以硬编码的方式写入到Java代码中,修改是需要重新编译代码的

XML的优点:

配置和代码是分离的,在XML中做修改,无需编译代码,只需要重启服务器即可将新的配置加载

XML的缺点:

编写麻烦,效率低,大型项目过于复杂

Spring数据访问层管理

Spring本身提供了web层的SpringWeb和持久层的Spring JdbcTemplate

Spring JdbcTemplate

1,下载Spring Jdbc数据访问层jar包

<!-- spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<!-- 阿里数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency><!--记得导入MySQL的jar包-->
<!-- mysql -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version>
</dependency>

2.导入属性文件

<context:property-placeholder location=“config.properties”/>

管理数据源对象,本次采用阿里巴巴数据库连接管理对象druid

<bean id="druidDataSource"class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value=""></property>
<property name="url" value=""></property>
<property name="username" value=""></property>
<property name="password" value=""></property>
<property name="initialSize" value="10"></property><!--初始化连接数量-->
<property name="maxActive" value="20"></property><!--最大连接数量-->
</bean>

Spring集成Mybatis

Spring 集成 Mybatis 其核心是将 SqlSessionFactory 交由 Spring 管理,并由Spring 管理对

dao接口的代理实现

首先需要导入mybatis的jar包

同时还需要导入Spring结合Mybatis的jar包

<!--Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency><!-- Spring结合Mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>

配置sqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
</property>
</bean>

指定生成接口代理

<bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ffyc.ssm.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">
</property>
</bean>

在service中注入Dao代理接口,此接口具有Spring代理实现

@Autowired
DeptDao deptDao;

这篇关于SpringSpring搭建SpringJdbcTemplateSpring Bean管理Spring结合Mybatis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116074

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2