Spring依赖注入的五种方式:
1.property属性
2.构造函数注入
3.p空间注入
4.spel注入
{
访问成员属性 #{对象.属性名}
访问静态方法 #{T(包名.类名).方法名([参数])}
访问成员方法 #{对象.方法名()}
}
5.注解
Spring JdbcTemplate的两种使用方式:
1.使用 ComboPooledDataSource创建连接池对象,并对连接池对象赋值,然后创建一个JdbcTemplate对象执行sql语句。
2.用Spring创建ComboPooledDataSource和JdbcTemplate对象。
{
JdbcTemplate的3种常用方法:
update:实现增删改
queryForObject:查询的结果是一个对象或者单个值
query:查询 返回集合
}
Aop的3种模式:
静态代理
动态代理
{
jdkProxy(实现InvocationHandler接口)
cglib(实现 MethodInterceptor接口)(jdk自带的代理方式 必须要实现接口,有限制,所以有Cglib方式)
}
SpringAop:
{
通过配置文件织入
通过注解的方式织入
}
反射访问私有属性的方法有两种:
1.调用私有属性的set方法
2.将私有属性通过反射变为公有属性(只在反射的时候有效)
Test类:
//第二种方式:
@Test
public void test2()
{
//第2种方式:
DrinkService DrinkService1 = new DrinkService();
Class clazz = DrinkService1.getClass();
try {
//指定要访问的私有属性名
Field field = clazz.getDeclaredField("iDrinkDao");
//设置为可访问
field.setAccessible(true);
//创建一个新的MysqlDrinkDao对象
MysqlDrinkDao mysqlDrinkDao = new MysqlDrinkDao();
//对DrinkService1里面的iDrinkDao赋值
field.set(DrinkService1,mysqlDrinkDao);
//测试是否赋值成功
DrinkService1.add();
} catch (NoSuchFieldException | IllegalAccessException e) {
}
}
MysqlDrinkDao类:
package com.test.dao.impl;
import com.test.dao.IDrinkDao;
public class MysqlDrinkDao implements IDrinkDao {
@Override
public void add() {
System.out.println("连接Mysql数据库");
}
}
DrinkService类:
package com.test.service.impl;
import com.test.dao.IDrinkDao;
import com.test.service.IDrinkService;
public class DrinkService implements IDrinkService {
private IDrinkDao iDrinkDao;
@Override
public void add() {
iDrinkDao.add();
}
}