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

网站怎么适配移动端在线查看网站源码

网站怎么适配移动端,在线查看网站源码,灯饰网站建设图片,建设网站需要了解些什么问题文章目录 前言1. 声明注解2. 使用 Spring 的工厂拓展3. 收集策略4. 完整的代码后记 前言 需求#xff1a; 用key找到对应的方法实现。使用注解的形式增量开发。 MyComponent public class Sample1 {MyMethod(key key1)public String test2() {return She… 文章目录 前言1. 声明注解2. 使用 Spring 的工厂拓展3. 收集策略4. 完整的代码后记 前言 需求 用key找到对应的方法实现。使用注解的形式增量开发。 MyComponent public class Sample1 {MyMethod(key key1)public String test2() {return Shenzhen;} }任意时刻都能通过key来进行依赖查找 Testpublic void test() {Assert.notNull(myBeanFactory.getMethod(key1), key1对应的方法不能为空);}实现思路 声明自己的类注解并要求被 Spring 收集声明自己的方法注解确保可以通过反射获取借 Spring 的能力容器启动收集bean完成后把bean列表交给自己用于自己的收集策略。 1. 声明注解 类注解 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented // 继承Spring的注解确保类能被Spring扫描 Component public interface MyComponent {AliasFor(annotation Component.class)String value() default ; }方法注解 Target({ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface MyMethod {// 用于依赖查找的keyString key(); }2. 使用 Spring 的工厂拓展 找到我们用注解标记的类、方法Spring 收集完bean之后提供了拓展点供我们遍历这些bean。 BeanFactoryPostProcessor 接口其中 ConfigurableListableBeanFactory beanFactory 提供了容器 Component public class MyBeanFactory implements BeanFactoryPostProcessor {Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {// 找到所有注解标记的beanMapString, Object beanMap beanFactory.getBeansWithAnnotation(MyComponent.class);beanMap.forEach((beanName, bean) - {// 收集bean中用注解标记的方法 (方法先省略)// collectMethod(bean);});} }3. 收集策略 收集策略可以很简单这里就用一个Map收集用Spring的AnnotationUtils.findAnnotation(method, MyMethod.class) 命中标识的方法如果命中则拿到注解中的key收集key和Method的映射关系 // 自己的容器private static final MapString, Method METHOD_MAP new HashMap();public Method getMethod(String key) {return METHOD_MAP.get(key);}private void collectMethod(Object bean) {Method[] methods bean.getClass().getDeclaredMethods();Arrays.stream(methods)// 过滤 只要MyMethod标识的方法 .filter(method - Objects.nonNull(getAnnotation(method)))// 收集 通过MyMethod的注解key绑定依赖关系放到自己的容器.forEach(method - METHOD_MAP.putIfAbsent(getAnnotation(method).key(), method));}private static MyMethod getAnnotation(Method method) {return AnnotationUtils.findAnnotation(method, MyMethod.class);} 4. 完整的代码 import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.stereotype.Component;import java.lang.reflect.Method; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;Component public class MyBeanFactory implements BeanFactoryPostProcessor {private static final ConcurrentHashMapString, Method METHOD_MAP new ConcurrentHashMap();Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {// 从Spring容器中获取所有MyControllerMapString, Object beanMap beanFactory.getBeansWithAnnotation(MyComponent.class);beanMap.forEach((beanName, bean) - {// 收集bean里面的所有可用方法collectMethod(bean);});}private void collectMethod(Object bean) {Method[] methods bean.getClass().getDeclaredMethods();Arrays.stream(methods)// 过滤 只要MyMethod标识的方法 .filter(method - Objects.nonNull(getAnnotation(method)))// 收集 通过MyMethod的注解key绑定依赖关系放到自己的容器.forEach(method - METHOD_MAP.putIfAbsent(getAnnotation(method).key(), method));}private static MyMethod getAnnotation(Method method) {return AnnotationUtils.findAnnotation(method, MyMethod.class);}public Method getMethod(String key) {return METHOD_MAP.get(key);} }后记 记录下用到的 Spring 的 api 和工具 一个核心的接口方法获取bean容器 BeanFactoryPostProcessor#postProcessBeanFactory 获取指定注解修饰的类 ConfigurableListableBeanFactory#getBeansWithAnnotation 获取方法上的注解内容 AnnotationUtils#findAnnotation
http://www.zqtcl.cn/news/251693/

相关文章:

  • 怎么打造自己的网站如何做自已网站
  • 美容美发网站模板wordpress适合优化吗
  • 网站开发的著作权和版权沧州市做网站价格
  • 优客逸家网站源码酒吧装修
  • 深圳网站制作的公司怎么样开工作室做网站怎样找资源
  • 大连城乡建设局网站seo编辑招聘
  • 网站建设意见怎么在中国移动做网站备案
  • 做内贸哪个网站找客户网络外包
  • 古玩网站建设意义钟山县住房和城乡建设局网站
  • 网站开发微信公众号自定义菜单规则网站建设
  • 营销网站建设工作教育培训wordpress主题
  • 温州地区做网站公司如何注册新公司
  • 做的网站怎样评估价值全国信息公示系统官网
  • 外国网站签到做任务每月挣钱1g内存vps 开电影网站
  • 营销型网站案例易网拓互联购物
  • 河南企业网站制作微信小程序如何做
  • 金坛住房和城乡建设局网站wordpress 需要授权吗
  • 个人理财的网站开发天津 公司网站建设
  • 做电脑游戏破解的网站大宗交易平台软件
  • 男女做暖暖视频免费网站网络营销策划案ppt
  • 普通网站 多大空间网站开发报告参考文献
  • 来宾住房和城乡建设网站pc网站建设哪
  • WordPress一键开启全站SSL东莞企业网站建设公司
  • 青海省公路建设管理局官方网站wordpress 加入地图
  • 建湖专业做网站的公司如何制作wordpress网站地图
  • 做自媒体查找素材的网站石家庄网站建设费用
  • 建立局域网网站怎么做外国网站
  • 绍兴专业网站建设公司网站seo设计
  • 开发网站需要多久建设银行招聘网站
  • 靖江 建设局网站安阳做网站的公司有哪些