Spring学习路径
- Spring的IOC
- Spring的DI
- Spring的AOP
- AOP的具体应用,事务管理
- IOC/DI的具体应用,整合Mybatis
Spring的IOC
- bean基础配置: id, class,name, scope
- bean实例化:构造方法实例化,静态工厂实例化,实例工厂和FactoryBean
- bean的生命周期:init-method, destory-method,close,registerShutdownHook,InitializingBean,DisposableBean
Spring的DI
- setter注入
注入引用数据类型
注入简单数据类型
<property name="userDao" ref="userDao"/>
<property name="connectionNum" value="10"/>
- 构造器注入
注入引用数据类型
注入简单数据类型
<constructor-arg name="userDao" ref="userDao"/>
<constructor-arg name="connectionNum" value="666"/>
- 自动配置
- 自动装配用于引用类型依赖注入,不能对简单类型进行操作
- byType
- byName
- 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byName"/>
- 集合注入
- 属性
- setter方法
- 配置
<property name="array">
<array>
<value>100</value>
<value>200</value>
<value>300</value>
</array>
</property>
IOC/DI配置管理第三方bean
案例:数据源对象管理
- 导入
druid
的依赖 - 配置第三方bean
- 从IOC容器中获取对应的bean对象
- 运行程序
<!--管理DruidDataSource对象-->
<bean class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
加载properties文件
步骤1:准备properties配置文件
步骤2:开启context
命名空间
步骤3:加载properties配置文件
步骤4:完成属性注入
//步骤1:准备properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root
//步骤2:开启`context`命名空间
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
//步骤3:加载properties配置文件
<context:property-placeholder location="jdbc.properties"/>
//步骤4:完成属性注入
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
核心容器
容器的创建方式 2种
bean的获取方式 3种
容器的层次结构
BeanFactory的使用
Resource resources = new ClassPathResource("applicationContext.xml");
BeanFactory bf = new XmlBeanFactory(resources);
BookDao bookDao = bf.getBean(BookDao.class);
BeanFactory和
ApplicationContext`之间的区别
- BeanFactory是延迟加载,只有在获取bean对象的时候才会去创建
- ApplicationContext是立即加载,容器加载的时候就会创建bean对象
- ApplicationContext要想成为延迟加载,只需要按照如下方式进行配置
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" lazy-init="true"/>
IOC/DI注解开发
纯注解开发
-
记住@Component、@Controller、@Service、@Repository这四个注解
-
applicationContext.xml中
<context:component-san/>
的作用是指定扫描包路径,注解为@ComponentScan -
@Configuration标识该类为配置类,使用类替换applicationContext.xml文件
-
ClassPathXmlApplicationContext是加载XML配置文件
-
AnnotationConfigApplicationContext是加载配置类
作用范围与生命周期
@scope 默认值singleton(单例),可选值prototype(非单例)
@PostConstruct //在构造方法之后执行,替换 init-method
@PreDestroy //在销毁方法之前执行,替换 destroy-method
注解开发依赖注入
- 注解实现按照类型注入
- 注解实现按照名称注入
- 简单数据类型注入
- 注解读取properties配置文件
- 步骤1:resource下准备properties文件
- 步骤2: 在配置类上添加
@PropertySource
注解 - 使用@Value读取配置文件中的内容
@Autowired
@Qualifier
@Value
@PropertySource
IOC/DI注解开发管理第三方bean
引入外部配置
@ComponentScan
@import
@Bean