文章目录
原版笔记
- 什么是DI
- Spring 实现DI 的三种方式 并写出配置文件中的关键代码
- 写出下面的对象 在Spring 的配置文件中对应的注入代码
public class MyMsg{
private String title;
private int count;
private List friends;
private Properties phones;
}
给title 注入 好好学习 count 注入 12345 friends 中注入 小明 小新 小泽
phones 中注入 xiaoming 13999876543 xiaoxin 13777658899
-
装配一个对象 dataSource 对象
-
Spring 中 EL 表达式
只要把之前EL表达式中的 $ 换成 #
Properties 对象的单独定义 以及 使用 location引用 properties文件 -
组件扫描技术
3.1 简介
基于注解(标注) 一个技术 这个技术的出现可极大的简化xml配置文件编写
3.2 四个组件扫描的标注
@Component 通用组件标记
@Repository 持久化层组件
@Service 业务逻辑层组件
@Controller 控制层组件
3.3 组件扫描的实现步骤
1.建立项目 拷贝 ioc 和 aop jar 包到 lib 下
2.拷贝配置文件 到 src 下 并在配置文件中开启组件扫描
<context:component-scan base-package=“包名结构” />
3.在相应类上 打对应的标注
4.从Spring 容器获取对应的组件
默认以类名首字母小写为标准获取组件
当然也可以指定组件放入容器中的标识
3.4 写一个BankAccountDAO 接口 里面定义一个根据卡号
获取账户信息的方法 。然后写一个实现类 对这个方法做一个伪实现
最后把实现类对象 以标注的形式 加载到Spring 容器中。最后通过Spring
容器获取实现类对象 并调用根据卡号获取对象的方法 。
@Service
public class BankAccountService{}
@Service(value=“bankService”)
public class BankAccountService{}
@Service(“bankService”)
public class BankAccountService{}
3.5 和组件装配有关的标注
@Autowired 可以加在字段 或者 setter 方法 或者 构造函数上
首先根据类型加载对应的组件 类型找不到则根据名字查找
这个标注也可以指定名字 进行查找 如果对应的名字找不到 则直接停止
但是得通过 @Qualifier(value=“bankAccountDao”)
@Autowired(required=true) 这是默认 则必须找到对应的组件
没有程序直接崩溃 也可以指定成false 找不多对应的组件 忽略@Resource 可以加在字段 或者 setter 方法 但这通常就够用了
这个标注 它不是Spring框架的 它java中的标准标注 但可以和Spring
无缝结合。
优先按照名字 查找 如果找不到 则按照类型查找。
当然也可以直接指定名字进行查找。注意指定名字必须使用 name 如
@Resource(name=“bankAccountDao”)
3.6 其它标注
@PostConstruct 初始化方法的标注
@PreDestroy 对象销毁之前调用的方法
@Value 可以使用Spring EL表达式注入值 -
Spring DAO
4.1 Spring DAO 所做的工作
对Jdbc 的操作进行封装,简化了jdbc的操作
对jdbc的事务 进行AOP 模式的封装 简化了事务的管理和操作
对数据库访问中的异常 由原来的检查异常 封装成了 继承 RunTimeException
的非检查异常 DataAccessException。
4.2 JdbcTemplate
这个类负责 加载驱动 获取连接 获取执行环境 和 释放资源
我们只需要关心 sql的编写 和 数据的处理
4.3 如何获取JdbcTemplate
最直接的是 继承 JdbcDaoSupport这个类
如果不继承JdbcDaoSupport 则需要自己注入模板
4.4 使用 继承的方式 来完成 ------ 查询产品表中的数据量
1.需要准备一张表 表中放入数据 (13 ---- xdl_product)
2.写一个产品的接口 接口中定义一个查询产品数据的方法
3.先导入ioc AOP dao 对应的jar包写一个接口的实现类
继承 JdbcDaoSupport 并实现接口 这里需要注入一个 dataSource
4.使用模板 和 模板对应的方法 完成数据量的查询
5.测试dao实现类 看是否能获取到产品数量