当前位置: 首页 > news >正文

建建建设网站品牌策划书案例

建建建设网站,品牌策划书案例,vi品牌设计,设计软件网站Aware接口 Aware接口中只是设置了对应的set方法,目前只定义了三个Aware 以BeanNameAware为例 package com.ez4sterben.spring.ioc.factory.aware;/*** bean名字清楚** author ez4sterben* date 2023/08/31*/ public interface BeanNameAware {/*** 设置beanName* …

Aware接口

Aware接口中只是设置了对应的set方法,目前只定义了三个Aware

在这里插入图片描述
以BeanNameAware为例

package com.ez4sterben.spring.ioc.factory.aware;/*** bean名字清楚** @author ez4sterben* @date 2023/08/31*/
public interface BeanNameAware {/*** 设置beanName* @param beanName*/void setBeanName(String beanName);
}

检查Aware接口

	/*** @param aware* @param clazz* @return boolean*/public boolean isImplAware(Class<?> aware, Class<?> clazz){Class<?>[] interfaces = clazz.getInterfaces();for (Class<?> anInterface : interfaces) {if (anInterface.equals(aware)) {return true;}}return false;}

通过invoke执行实现方法

	/*** beanNameAware* @param bean* @throws Exception*/public void doBeanNameAware(Object bean) throws Exception {Class<?> aClass = bean.getClass();String beanName = parseBeanName(bean);Method setBeanName = aClass.getMethod("setBeanName", String.class);setBeanName.invoke(bean, beanName);}/*** 解析beanName* @param bean* @return {@link String}*/public String parseBeanName(Object bean){Class<?> aClass = bean.getClass();Component annotation = aClass.getAnnotation(Component.class);String value = annotation.value();if ("".equals(value)){String name = aClass.getSimpleName();String s = name.substring(0, 1).toLowerCase();value = s + name.substring(1);}return value;}/*** beanFactoryAware* @param beanFactory* @param bean* @throws NoSuchMethodException* @throws InvocationTargetException* @throws IllegalAccessException*/public void doBeanFactoryAware(BeanFactory beanFactory, Object bean) throws Exception {Class<?> aClass = bean.getClass();Method setBeanName = aClass.getMethod("setBeanFactory", BeanFactory.class);setBeanName.invoke(bean, beanFactory);}/*** applicationContextAware* @param beanFactory* @param bean* @throws Exception*/public void doApplicationContextAware(BeanFactory beanFactory, Object bean) throws Exception {Class<?> aClass = bean.getClass();Method setBeanName = aClass.getMethod("setApplicationContext", ApplicationContext.class);setBeanName.invoke(bean, new ApplicationContext(beanFactory));}

ApplicationContext是如何设计的

因为父类BeanFactory中的beanMap是私有的,为了保持一致,我们就要将对应的beanFactory对象传入构造方法然后给ApplicationContext中的beanMap赋值,由于java是值传递所以这两个对象中指向的beanMap是同一个

package com.ez4sterben.spring.ioc.context;import com.ez4sterben.spring.ioc.factory.support.BeanFactory;import java.util.Map;/*** 应用程序上下文** @author ez4sterben* @date 2023/08/30*/
public class ApplicationContext extends BeanFactory {private final Map<String, Object> beanMap;public ApplicationContext(BeanFactory beanFactory) {beanMap = beanFactory.getBeanMap();}@Overridepublic Map<String, Object> getBeanMap() {return beanMap;}
}

测试

为了方便测试,在BeanNameAware时向beanMap中put一下
在这里插入图片描述
主程序中的代码

				if (beanScanner.isImplAware(BeanNameAware.class, clazz)) {beanFactory.doBeanNameAware(bean);}// BeanFactoryAwareif (beanScanner.isImplAware(BeanFactoryAware.class, clazz)) {beanFactory.doBeanFactoryAware(beanFactory, bean);}// ApplicationContextAwareif (beanScanner.isImplAware(ApplicationContextAware.class, clazz)) {beanFactory.doApplicationContextAware(beanFactory, bean);}

测试类中的代码

/*** 测试组件** @author ez4sterben* @date 2023/09/01*/
@Component
@Data
public class TestComponent implements BeanNameAware, BeanFactoryAware, ApplicationContextAware {@Value("ez4sterben")private String name;private String age;@Overridepublic void setBeanName(String beanName) {System.out.println(beanName);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {System.out.println(applicationContext.getBeanMap().toString());}@Overridepublic void setBeanFactory(BeanFactory beanFactory) {System.out.println(beanFactory.getBeanMap().toString());}
}

测试结果

在这里插入图片描述

http://www.ritt.cn/news/18643.html

相关文章:

  • 政务网站模版商丘seo推广
  • wordpress新网站百度大搜是什么
  • 12306网站是谁做的免费发帖论坛大全
  • 广州天河建站公司百度推广退款电话
  • 西宁网络公司网站制作企业网站设计模板
  • wordpress相册点击弹出框成都seo技术经理
  • 专业的网站建设服务商网站免费优化
  • 找公司做网站需要注意什么seo与sem的区别
  • 云南省保山建设网站网站开发公司排行榜
  • 给企业做网站收入在百度上怎么发布信息
  • 刚开始做网站要传数据库吗百度一下官方入口
  • 浙江备案需要开启网站吗优质外链
  • 按颜色分类的网页设计欣赏网站网络推广学校
  • 网站标题如何写重庆百度竞价开户
  • 怎么给网站添加代码如何营销
  • b2b电子商务网站开发网站快速优化排名app
  • 免费制作小说封面的网站国外网站排行
  • 网页设计与制作教程hbuilder长沙网站seo外包
  • 建一个网站花费百度上的广告多少钱一个月
  • wordpress同城插件seo网络培训
  • 谷歌上怎样做网站发帖推广哪个平台好
  • 景县做个油管的网站怎么做googlechrome浏览器
  • 目前市面上做网站的程序大数据获客系统
  • 全套商城网站后台管理系统网站管理页面百度搜索风云排行榜
  • 网站加速肇庆seo优化
  • 宁波seoseo方法培训
  • dede模板seo在线优化工具 si
  • 大学部门宣传视频创意南宁seo优化公司排名
  • 先建网站还是先做app好网络营销策划的内容
  • 深圳罗湖网站开发企业网站开发公司