Spring核心知识概述
目录:
1. IOC理论
2. IOC创建对象的方式
3. Spring配置
4. 依赖注入
5. Bean的自动装配
6. 使用注解开发
7. 使用纯java配置Spring
8. Spring实现AOP
9. Spring整合MyBatis
正文:
1. IOC理论
- 将对象的控制选择权交给用户,程序员只管使用
2. IOC创建对象的方式
- 无参构造(默认)
- 有参,序号传参 index
- 有参,值类型传参 type
- 有参,变量名字传参 name
3. Spring配置
- alias别名
- Bean标签配置
- import导入多个配置文件
4. 依赖注入
- 构造器注入
- Set方式注入【重点】
- 普通值注入(使用value)
- Bean注入(使用ref)
- 数组注入
- list集合注入
- map集合注入
- Set集合注入
- 空值注入
- Properties配置注入
- 扩展方式
注意:P命名和C命名不能直接使用,需要导入约束条件
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
- P命名空间注入(可以直接注入属性)Property(对应Set注入)
- C命名空间注入(注入有参构造属性)Construct-args(对应构造器注入)
5. Bean的自动装配
- 在Spring中有三种装配方式
1)在xml中显式地配置
2)在java中显式地配置
3)隐式地自动装配bean(重要)
- autowire = "byName"
- autowire = "byType"
- 使用注解实现自动装配
- @Autowired 搭配 @Qualifier(value="xxx") 来使用
- @Resource(name="xxx")
6. 使用注解开发
注意:使用注解开发必须保证AOP的包导入,并且允许注解
- Bean标签
- @Component
- 属性注入
- @Value
- @Component衍生注解(功能一样,都是装配到Bean)
- dao层 【@Repository】
- service层【@Service】
- controller层【@Controller】
- 作用域
- @Scope
7. 使用纯java配置Spring
- @Configuration
- @ComponentScan
8. Spring实现AOP
1)使用原生的Spring API接口
2)使用自定义类
3)使用注解
- 切入点表达式
- 作用:知道对哪个类里面的哪个方法进行增强
- 语法:execution([权限修饰符] [返回类型] [类全路径] [方法名称]([参数列表]))
- 其中,返回类型可以省略
- 举例:
1.对com.pushihao.dao.UserDao类里的add进行增强
execution(* com.pushihao.dao.UserDao.add(..))
2.对com.pushihao.dao.UserDao类里的所有方法进行增强
execution(* com.pushihao.dao.UserDao.*(..))
3.对com.pushihao.dao包里的所有类,类里面的所有方法进行增强
execution(* com.pushihao.dao.*.*(..))
9. Spring整合MyBatis
第一种方式:
1. 在Spring配置文件中编写数据源,使用org.springframework.jdbc.datasource.DriverManagerDataSource
2. 配置sqlSessionFactory的Bean对象,注入数据源,并在其中绑定MyBatis配置文件
3. 配置sqlSessionTemplate的Bean对象,其实就是MyBatis的sqlSession对象
4. 给自己创建的接口编写一个实现类,并在Spring中配置一个Bean对象
5. 测试使用
第二种方式:
1. 在Spring配置文件中编写数据源,使用org.springframework.jdbc.datasource.DriverManagerDataSource
2. 配置sqlSessionFactory的Bean对象,注入数据源,并在其中绑定MyBatis配置文件
3. 给自己创建的接口编写一个实现类,继承SqlSessionDaoSupport类,就可以直接调用其中的getSqlSession方法。在Spring中配置一个Bean对象,为父类注入SqlSessionFactory
4. 测试使用
事务管理(要成功都成功,要失败都失败):
- 声明式事务: 使用AOP切入,自动管理
- 编程式事务: 需要在代码中进行事务的管理

浙公网安备 33010602011771号