对象的加强的三种方式:
继承
装饰着模式
动态代理
spring ioc 的意思其实就是 将创建对象的权利交给spring 来做
实现代理模式的要点:
(一)静态代理:必须提供代理类
1、目标类(pjl)和代理类(wp)都必须 实现同一个接口 (kindwoman)
2、访问目标类对象,必须通过代理对象,这一点跟装饰着是差不多的。
3、在代理对象(wp)中声明接口(kindwoman)的引用作为成员变量通过类的构造函接口要代理的目标对象,然后赋值给这个引用

4、在代理兑现中实现 的方法去调用目标类对象,同时可以做一些其他的操作。

这边这个目标对象一定要用final 修饰
//动态代理:是通过jdk提供的proxy
所以不用写代理类,也不用在代理定义接口的成员变量,因为都没有代理类
动态代理:
1/第一个参数:通过目标类得到类加载器
2/第二个参数:通过目标类得到所有要实现的接口
3/第三个参数:
注解:
前面的基于bean的注解方法:
本来都可以有
1. @Component取代<bean class="">
@Component("id")
取代 <bean
id="" class="">
2.web开发,提供3个@Component注解衍生注解(功能一样)取代<bean
class="">
@Repository
:dao层
@Service:service层
@Controller:web层
3.依赖注入 ,给私有字段设置,也可以给setter方法设置
普通值:@Value("")
引用值:
方式1:按照【类型】注入
@Autowired
方式2:按照【名称】注入1
@Autowired
@Qualifier("名称")
方式3:按照【名称】注入2
@Resource("名称")
4.生命周期
初始化:@PostConstruct
销毁:@PreDestroy
5.作用域
@Scope("prototype")
多列
singlon 就是单例
set注入不仅要配置beans 而且还有在相应的配置中action 中加getset方法
注解还不用写xml的都读写
//使用Springjuint 4的测试,首先需要导包,然后在写注解
/加载spring 配置文件
//使用spring继承的junit4的测试
@RunWith(SpringJUnit4ClassRunner.class)
//加载spring配置文件
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class Testxml {
@Autowired
private UserAction userAction;
@Test
public void test1() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{
// ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserAction userAction2 = context.getBean("userAction",UserAction.class);
// System.out.println(userAction1==userAction2);
userAction.excute();
//context.getClass().getMethod("close").invoke(context, null);
}
}然后在application 当中一个文件搞定
@Test
// 做到单元测试然后给测试 测试越精细,以后麻烦就更少了
public void tset1() throws IllegalAccessException,
IllegalArgumentException, InvocationTargetException,
NoSuchMethodException, SecurityException {
// 这一种方式是通过读写配置文件 ,其实前面应该是applicationContext
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
// UserAction userAction2 = context
// .getBean("userAction", UserAction.class);
userAction.excute();
// 这是通过高反射机制来读取xml的
context.getClass().getMethod("close").invoke(context, null);
评语 :今天的状态,还可以,就是对于动态调用的方法没有深入去研究很遗憾,这边的话,真的需要自己多多的去深入进去。以后上课内容不懂的,一定要厚着脸皮好好去问。明天新的老师来,和他搞好关系自己多学习一下