Spring框架介绍(基础篇)

Spring框架介绍(基础篇)

一.spring是什么?

spring是一个轻量级的,IOC和AOP的一站式java开发框架;为简化企业级应用开发而生的。

二.轻量级的

Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring 核 心功能的所需的 jar 总共在 3M 左右。 Spring 框架运行占用的资源少,运行 效率高

三.IOC

即 Inversion of Control,缩写为 IOC,是由 Spring 管理对象,而非传统实现 中由程序代码直接操控.

以前我们需要什么对象,我们再程序中自己new对象。现在,spring思想是将对象的生成和管理统一交给框架,我们需要的时候,直接从框架获取即可

四.AOP

Aspect Oriented Programming 直译过来就是面向切面编程。AOP 是一种编 程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各 个层次的对象,而面向切面编程是将程序抽象成各个切面.

可以让我们的程序动态添加某种功能,也不用修改原来的代码

五.一站式框架

Spring 本身也提供了数据访问功能和 web 功能,以及可以很好的管理其他框架.

在IOC和AOP的基础上,spring框架还对数据访问层和web层都进行了封装

六.Inverse of Cotrol 控制反转

把什么的控制权,反转给了谁

把创建对象的控制权,反转给了spring框架

将原本在程序中手动创建对象的控制权,交由Spring框架来管理。

具体管理(对象的创建,对象的初始化,以及对象功能的增强,以及对象与对象之间的依赖关系,包括对象的销毁)

Bean:有spring框架创建的对象,称为一个bean对象,和我们自己new的原生对象不一致。

spring如何进行Bean的管理?

方式1:基于xml

bean指的是spring框架创建出来的对象,spring创建的对象与我们自己new的对象时是区别的
id:指定一个生成的对象名字
name:也是指定一个生成的对象名字
class:需要让spring管理的类的全类名
scope(范围):
singleton 单例的,spring框架只为该类创建一个对象,而且是在spring容器/框架启动时直接创建好了
prototype 多例的;原型的 每次获取对象时,spring才会创建一个新对象

<bean 
	id="admin" 
	name="admin1,admin2" 
	class="com.lzy.spring.model.Admin" 
	scope="singleton">
</bean>

依赖注入:在spring创建对象的同时,为对象中的属性进行赋值,有的属性值可能来源于另一个对象

方式1:通过属性的set方法注入
<bean>
		<property name="id" value="1"></property>
        <property name="account" value="admin"></property>
        <property name="password" value="123456"></property>
</bean>        

方式2:通过有参的构造方法赋值
<bean>    
<constructor-arg name="id" value="1"></constructor-arg>
    <constructor-arg name="account" value="admin"></constructor-arg>
    <constructor-arg name="password" value="123456"></constructor-arg>
</bean>
方式2:基于注解

开启注解扫描

<context:component-scan base-package="com.lzy.spring"></context:component-scan>

注解创建对象

@Component(value=“user”)等同于 <bean id=“user” class=“”></bean>
@Service
@Repository
<!--以上注解都可以实现创建对象功能,只是为了后续扩展功能,在不同的层使用不
同的注解标记-->
@Scope(value=“prototype”) 原型
@Scope(value=“ singleton ”) 单例

注解方式的自注入:

​ 方式1:
​ 使用spring框架中提供的@Autowired
​ 可以添加到要注入的属性上面, 或者属性的set方法上, 如果直接添加到属性上,那么set方法可以不需要

​ 默认情况下,要注入的属性对象不能空 @Autowired(required = true)
​ 注入时,查找bean的方式有两种:
​ 1.通过对象名查找,需要使用@Qualifier(value = “adminDao1”)
​ 2.通过属性的类型查询
​ 方式2:
​ 使用jdk中提供的注解@Resource
​ 查询bean也是有两种方式
​ 1.@Resource 通过类型查询
​ 2.@Resource(name = “adminDao”) 通过对象名查询

注解与 XML 的对比 :

注解优点: 方便,直观,高效(代码少,没有配置文件的书写那么复杂)。

注解缺点:以硬编码的方式写入到 Java 代码中,修改是需要重新编译代码的。

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

xml 的缺点是:编写麻烦,效率低,大型项目过于复杂。

七.spring对数据访问层进行管理(IOC的应用):

Spring 是个一站式框架:Spring 自身也提供了 web 层的 SpringWeb 和 持 久层的 Spring JdbcTemplate

下载 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>

导入属性文件

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

属性文件

#统一把配置文件中用到的值统一管理起来,以后修改时,只要在此文件中修改参数即可
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
uname=root
pwd=root
initialSize=5
maxActive=20

管理数据源对象

spring 管理数据库链接对象

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

<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${uname}"></property>
<property name="password" value="${pwd}"></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 插件

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>

配置 sqlSessionFactor

<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.ff.ssm.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">
</property>
</bean>

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

    @Autowired
    LoginDao loginDao;
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值