Spring IOC
ioc:反转控制,即将原本在程序中手动创建对象的控制权,交由Spring框架来管理
ioc容器:是具有以来注入功能的容器,负责对象的实例化,初始化,对象与对象之间以来关系配置、对象销毁、对外提供对象的查找等操作
正控:自己去负责对象的创建
反控:从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架
底层实现方式:解析 xml/扫描注解标签 + 工厂模式 + 反射机制
Spring Bean管理
bean
bean配置需要spring 管理的类
id生成的对象名
class全类名
name 对象别名,可以为多个
scope:
singleton(默认值):在Spring中只存在一个bean实例,单例模式
prototype:原型getBean()的时候都会new Bean()
request:每次http请求都会创建一个bean,仅用于WebApplicationContext环境
session:同一个http session共享一个Bean,不同Session使用不同的Bean,使用环境同上
Xml配置方式依赖注入
指Spring创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设置给该对象
注入方式:
set方法注入
构造方法注入
注解方式实现
1.开启注解扫描
<context:component-scan base-package="包名"> </context:component-scan>
2.注解创建对象
Admin
@Component(value="admin")
@Scope(value="singleton")
AdminDao
@Repository(value ="adminDao")
AdminService
@Service(value="adminService")
@Autowired
是Spring框架自己的注解标签
可以有两种方式:1.通过对象名查找@Qualifier(value="adminDao")
2.按照类型查找
默认注入的对象不能为空
@Qualifier(value="adminDao")
@Resource
是JDK提供的注解标签
可以有两种方式:
1.通过对象名查找
2.按照类型查找
Spring JDBC
spring数据访问层功能,提供Jdbctemplate封装的方法操作数据库,主要使用的是其中的事务管理功能
实现步骤:
<!-- 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>
阿里数据源:阿里巴巴开源的数据源管理组件,音译为德鲁伊,提供与数据库连接实现,还提供数据库连接池功能
数据库连接池:因为频繁创建销毁数据库连接对象(Connection),开销较大,提出池的概念,事先缓存一部分连接对象,使用时直接从池中获取,用完不销毁,还回到池中,减少创建销毁时间开销
导入属性文件
<context:property-placeholder location="config.properties"/>
管理数据源对象
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${driverName}"></property> <property name="url" value="${url}"></property> <property name="username" value="${uname}"></property> <property name="password" value="${pwd}"></property> <property name="initialSize" value="${initialSize}"></property> <property name="maxActive" value="${maxActive}"></property> <property name="maxWait" value="${maxWait}"></property> </bean>
在配置文件中创建JdbcTemplate
<!--配置spring jdbcTemplate 提供了操作的方法--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入数据源--> <property name="dataSource" ref="dataSource"></property> </bean>
在类中获得JdbcTemplate对象,就可以直接使用了
@Autowird
JdbcTemplate jdbcTemplate;