1.添加spring依赖,在maven仓库中搜索spring
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>4.3.22.RELEASEversion>
dependency>
<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">
beans>
<bean id="userService" class="service.UserService">
bean>
// 1. 创建 spring 容器
// 类路径(对maven项目 java 和 resources)
application 应用程序 context 容器
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("spring.xml");
// 2.1 根据 id 获取容器中的对象
UserService service = (UserService)
context.getBean("userService");
// 2.2 根据 类型 获取容器中的对象
UserService service2
=context.getBean(UserService.class);
// 原来的手段:
// UserService service3 = new UserService();
// 3. 使用对象
service.insert(new User());
默认情况下,spring 中的每个 bean 标签只会创建一个对象(单例)
可以通过配置来实现多例
<bean scope="prototype|singleton">
配置初始化
<bean init-method="初始化方法名">
配置销毁
<bean destroy-method="销毁方法名">
默认是false(非懒惰), 改为 true 表示(懒惰)
<bean lazy-init="true">
<beans default-lazy-init="true">
<bean id="userService">
<property name="userDao" ref="userDao"/>
bean>
<bean id="userDao">
bean>
记得要给属性提供一个 公共的 setter 方法
降低耦合度:层与层之间,要依赖接口,而不要依赖于具体实现;配合 spring 的控制反转真正实现低耦合
DI (dependency inject) - 建立对象之间依赖关系的过程和方式
把userService 需要的 userDao 注入给 userService 的属性
常见的方式:
set 方法注入,spring调用set方法来完成对属性的赋值
<property name="属性名" ref="引用id"/>
<constructor-arg index="下标" ref="引用id"/>
<bean autowire="byName">
bean>
<bean autowire="byType">
bean>
可以使用
<property name="属性名" value="值" />
<constructor-arg index="下标" value="值"/>
注解值注入
@Value(“值”) – 不推荐直接给值
@Value("${key}") – 引用外部配置文件(*.properties)中的值, 根据这个key 到 properties 文件中找相应的值
需要在spring.xml 中配置此 properties 文件
<context:property-placeholder location="classpath:文
件的位置">
<bean id="dataSource" class="com.alibaba.druid.pool.
DruidDataSource" destroy-method="close">
<property name="url" value="jdbc:mysql://localho
st:3306/test"/>
<property name="driverClassName" value="com.mysq
l.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maxActive" value="10"/>
<property name="minIdle" value="2"/>
bean>
HikariCP 国外的 - 速度
Druid 阿里的 - 为监控sql
<bean id="dataSource"
class="com.zaxxer.hikari.HikariDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
<property name="maximumPoolSize" value="10"/>
<property name="minimumIdle" value="2"/>
bean>