把业务复杂度藏在产品的易用性背后
BeanFactory
registerSingleton(String beanName, Object singletonObject):注册一个单例bean。
registerBeanDefinition(String beanName, BeanDefinition beanDefinition):注册一个bean定义。
ApplicationContext
registerBean(String beanName, Object beanInstance):注册一个bean实例。
registerSingleton(String beanName, Object singletonObject):注册一个单例bean。
注册代理的步骤
创建代理对象。
将代理对象注册到Spring容器中。
示例代码:
```java
// 创建代理对象
MyService proxy = (MyService) Proxy.newProxyInstance(
MyService.class.getClassLoader(),
new Class[] { MyService.class },
new MyServiceInvocationHandler()
);
// 注册代理对象到Spring容器中
beanFactory.registerSingleton("myServiceProxy", proxy);
```

注入代理
代理对象可以像普通bean一样注入到其他bean中。例如:
```java
@Autowired
private MyService myService;
// myService实际上引用的是代理对象
MyService service = myService;
```
注意:
代理对象必须实现与原始bean相同的接口或超类。
代理对象不能注入到与原始bean类型相同的bean中。