1. 通过maven 下载相关依赖需要的jar 包
jar
org.springframework
spring-context
5.0.2.RELEASE
commons-dbutils
commons-dbutils
1.4
c3p0
c3p0
0.9.1.2
mysql
mysql-connector-java
5.1.6
junit
junit
4.10
2.创建实体类
3.写出业务逻辑层和数据访问层的接口,以及实现类。实现类中加入固定的IOC封装属性
增删改的实现方法:
实现类中的具体注意代码:
//数据访问实现类具体
//spring 提供进行封装赋值的属性和方法
private QueryRunner runner;
public void setRunner(QueryRunner runner) {
this.runner = runner;
}
//spring 提供进行封装赋值的属性和方法---结束
//业务逻辑实现类具体
//spring 提供进行封装赋值的属性和方法
private IStudentDao studentDao;
public void setStudentDao(IStudentDao studentDao) {
this.studentDao = studentDao;
}
//spring 提供进行封装赋值的属性和方法---结束
4.配置IOC 容器中的具体属性。也就是配置:applicationContext.xml
知识拓展:scope=“prototype”
@Test
public void testquery(){
//1.获取spring IOC容器
ApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml");
//2.得到业务层对象
IStudentService ss = ac.getBean("studentService",IStudentService.class);
//3.执行方法
List students = ss.query();
for (Student student : students) {
System.out.println(student);
}
}
day31 2019-08-30 笔记重点:
三、耦合和解耦
1. 什么是耦合
模块之间的关联程度, 依赖程度
2. 什么是解耦
降低模块之间的耦合度(依赖关系)
3. 解耦的目的
编译器不依赖,运行期才依赖
4. 解耦思路
1) 把全限类名都放到配置文件中
2) 通过工厂帮助创建对象
a、beanFactory 是spring容器的顶层接口
b、接口ApplicationContext是 beanFactory子接口
实现类:ClassPathXmlApplicationContext -- 从类路径之下读取配置文件 (常用)
FileSystemXmlApplicationContext - 从绝对路径指定的配置文件读取
AnnotationConfigApplicationContext -- 纯注解配置使用的类 (常用)
2、getBean方法(掌握)
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//根据名称获取该对象
// Object userDao = ac.getBean("userDao");
// System.out.println(userDao);
// 根据类型获取该对象
// 如果该类型有两个实现类,会执行异常
// UserDao userDao = ac.getBean(UserDao.class);
// System.out.println(userDao);
// 得到是id为userDao1的对象,类型为UserDao接口的实现类
UserDao userDao = ac.getBean("userDao2", UserDao.class);
System.out.println(userDao);
3、bean对象的范围和生命周期(掌握)
springIOC容器默认的单例模式: 单例模式的对象在创建容器时创建,销毁容器时销毁
scope:prototype 原型模式(多例模式):获取时创建,当对象长时间不在被引用, 则被垃圾回收机制回收
scope:singleton :单例模式
scope :request: 请求范围
scope: session : 回话范围
scope:global session :全局范围 -- spring 5的新特性中被删除了
UserDao userDao1 = ac.getBean("userDao", UserDao.class);
System.out.println(userDao1);
UserDao userDao2 = ac.getBean("userDao", UserDao.class);
System.out.println(userDao2);
6、构造方法注入(掌握)
value 属性只能赋值简单的类型:基本数据类型和String类型
ref: pojo类型,复杂类型, 关联创建好的对象
7、set方法注入属性(常用)(掌握)
8、p名称空间注入:基于set方法注入--- 了解
a、在头部文件中引入p名称空间
b、使用p名称空间注入属性
9、注入集合属性(掌握)
javaSE
javaEE
javaME
javaSE
javaEE
javaME
javaSE
javaEE
javaME
five
six
seven