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

阳江哪里做网站网站优化推广 视屏

阳江哪里做网站,网站优化推广 视屏,app 网站开发公司电话,网站免费推广软件为了感谢罕哥对我工作的帮助#xff0c;特此记录下学习过程#xff0c;期待成为和罕哥一样优秀的人 时间#xff1a;2024.7.13 内容#xff1a;spring源码课程3学习记录 一、BeanDefinition BeanDefinition表示Bean的定义#xff0c;BeanDefinition中存在很多属性用来…为了感谢罕哥对我工作的帮助特此记录下学习过程期待成为和罕哥一样优秀的人 时间2024.7.13 内容spring源码课程3学习记录 一、BeanDefinition BeanDefinition表示Bean的定义BeanDefinition中存在很多属性用来描述一个Bean的特点 class表示Bean类型 scope表示Bean的作用域单例/原型 lazyInit表示Bean是否是懒加载 initMethodName表示Bean初始化时要执行的方法 destroyMethodName表示Bean销毁时要执行的方法 ........ 二、在Spring中定义Bean的方式 声明式定义 1、bean/ 2、Bean 3、Component(Service,Controller) 编程式定义 直接通过BeanDefinition此处就是Spring源码定义一个Bean的实现过程 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();beanDefinition.setBeanClass(UserService.class);beanDefinition.setScope(prototype);//把beanDefinition注册到容器中context.registerBeanDefinition(userService,beanDefinition);UserService userService (UserService)context.getBean(userService);userService.test(); 三、Spring内部的组件 下面的组件在Spring中使用的很少但是在源码中使用的很多学习有利于理解源码 1、AnnotatedBeanDefinitionReader 可以直接把某个类转换为BeanDefinition并读取解析类的注解。就是BeanDefiniton读取器。把读到的BeanDefinition存到容器中 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader new AnnotatedBeanDefinitionReader(context);//将UserService.class解析为BeanDefinitionannotatedBeanDefinitionReader.register(UserService.class);System.out.println(context.getBean(userService)); 2、XmlBeanDefinitionReader 可以解析bean/标签 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);XmlBeanDefinitionReader xmlBeanDefinitionReader new XmlBeanDefinitionReader(context);xmlBeanDefinitionReader.loadBeanDefinitions(spring.xml); 3、ClassPathBeanDefinitionScanner 扫描器和BeanDefinitionReader类似对某个包路径就行扫描对扫描的类进行解析如果存在Component注解就会把这个类解析为一个BeanDefinition AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext();context.refresh();ClassPathBeanDefinitionScanner scanner new ClassPathBeanDefinitionScanner(context);int i scanner.scan(org.com.zhuyn);System.out.println(context.getBean(userService)); 四、ApplicationContext与BeanFactory ApplicationContext继承了BeanFactory除此之外还继承了别的 ApplicationEnventPublisher事件发布器 EnvironmentCapable获取环境变量的功能 MessageSource进行国际化的功能 ResourcepatternResolver解析某些资源的功能 因此当我们使用applicationContext.getBean(xxx)的时候本质上是使用的DefaultListableBeanFactory来获取的。 1、ResourcepatternResolver 1拿文件资源 ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);Resource resource context.getResource(file://C:\\Usersxxxxxxxxx);System.out.println(resource.contentLength());2拿url ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);Resource resource context.getResource(https://www.baidu.com);System.out.println(resource.contentLength());System.out.println(resource.getURL()); 这里的Resource可以拿很多种资源。 2、ApplicationEnventPublisher 在工作当中可以直接定义一个事件发布器、 Component public class UserService {private ApplicationEventPublisher applicationEventPublisher;} 也可以使用applicationContext自带的事件发布器 Component public class UserService {Autowiredprivate ApplicationContext context;public void test(){context.publishEvent(hello);System.out.println(test);}} 事件监听器 ComponentScan(org.com.zhuyn) public class AppConfig {Beanpublic ApplicationListener applicationListener(){return new ApplicationListener() {Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent) {System.out.println(发布了一个事件applicationEvent);}};} } 五、类型转化 1、PropertyEditor 把字符串转换成user对象。 类型转换器 public class StringToUserPropertyEditor extends PropertyEditorSupport implements PropertyEditor {Overridepublic void setAsText(String text) throws IllegalArgumentException {User user new User();user.setName(text);this.setValue(user);} }类型转换器的使用 ApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);StringToUserPropertyEditor propertyEditor new StringToUserPropertyEditor();propertyEditor.setAsText(xiaoming);User user (User) propertyEditor.getValue();System.out.println(user.getName()); 在spring内部也使用到了类型转换例如当我们使用这个 UserService userservice context.getBean(userServiceUserService.class) 我们传一个string类型得到一个UserService类型的对象。 2、ConversionService 3、TypeConverter 六、比较器 可以根据Order注解或实现Ordered接口来执行值进行比较从而可以进行排序。 Ordered接口实现方法 1、在类上实现Ordered接口 2、使用OrderComparator构建比较器 类A public class A implements Ordered {Overridepublic int getOrder() {return 1;} } 类B public class B implements Ordered {Overridepublic int getOrder() {return 10;} }应用 A a new A();B b new B();OrderComparator comparator new OrderComparator();System.out.println(comparator.compare(a, b));//-1 a大为1b大为-1List list new ArrayList();list.add(a);list.add(b);//按order值升序排序list.sort(comparator);System.out.println(list);//[org.com.zhuyn.Service.A2f2c9b19, org.com.zhuyn.Service.B31befd9f] Order注解实现方法 Spring提供了OrderComparator的子类AnnotationAwareOrderComparator它支持使用Order来指定order值 类C Order(1) public class C { } 类D Order(10) public class D {} 应用 C c new C();D d new D();AnnotationAwareOrderComparator comparator new AnnotationAwareOrderComparator();System.out.println(comparator.compare(c,d));//-1 七、类的元数据 在Spring中需要去解析类的信息比如类名类中的方法类上的注解这些都可以称为类的元数据。所以Spring中对类的元数据做了抽象并提供了一些工具类。 1、MetaDataReader类的元数据读取器 解析一个类得到类的所有信息。AnnotatedBeanDefinitionReader 只读取了类的注解而MetaDataReader读取了一个类的所有信息包括类的注解类继承了什么类实现了哪些方法.....等等。 MetaDataReader是一个接口默认实现类为SimpleMetadataReader。 SimpleMetadataReaderFactory simpleMetadataReaderFactory new SimpleMetadataReaderFactory();//构造一个MetaDataReaderMetadataReader metadataReader simpleMetadataReaderFactory.getMetadataReader(org.com.zhuyn.Service.UserService);//得到一个ClassMetaData并获取类名ClassMetadata classMetadata metadataReader.getClassMetadata();System.out.println(classMetadata.getClassName());//获取接口名字结果为一个数组System.out.println(classMetadata.getInterfaceNames()[0]);//类上注解的信息AnnotationMetadata annotationMetadata metadataReader.getAnnotationMetadata();for(String annotionMetadata:annotationMetadata.getAnnotationTypes()){System.out.println(annotionMetadata);} 八、过滤器 1、excludeFilters 排除类名为UserService的类,就算她上面有component注解也不会成为Bean ComponentScan(value org.com.zhuyn, excludeFilters {ComponentScan.Filter(type FilterType.ASSIGNABLE_TYPE,classes UserService.class ) }) public class AppConfig {} 2、includeFilters 就算UserService类上没有Component注解它也会被扫描成为一个Bean。 ComponentScan(value org.com.zhuyn, includeFilters {ComponentScan.Filter(type FilterType.ASSIGNABLE_TYPE,classes UserService.class )}) public class AppConfig{ } 九、FactoryBean 可以通过这个来自己创建一个Bean
http://www.hkea.cn/news/14385848/

相关文章:

  • 全国知名网百度seo网站优化 网络服务
  • 网页制作成品四川网络推广seo
  • 济南企业自助建站重庆李健做网站
  • 云南网站建设是什么网页标准化对网站开发维护所有者的好处
  • 百度商桥网站哪里的wordpress主题比较好
  • 北京企业建站程序wordpress更换IP
  • 上传图片的网站要怎么做易安卓开发app稳定吗
  • 乐清市网站建设旅游网站开发设计文档
  • 基础建设的网站有哪些内容做网站人员配置
  • 站长工具seo综合望野王绩拼音版
  • 网站用什么框架做中山精品网站建设流程
  • 廊坊网站搭建wordpress 幻灯片
  • 上海营销型网站设计网页简洁模板
  • 泉州市住房和城乡建设网站广东网站系统建设
  • app网站开发招聘企业官方网站建设
  • 做易经类的网站网站怎么收录到百度
  • wordpress多图主题seo智能优化
  • 网站开发实用技术第2版课后答案网站开发目录规范
  • 手机活动网站模板哈尔滨seo服务
  • iis上做的网站外网怎么访问不了做的好英文网站
  • 建设网站技术人员先进事迹创建全国文明城市简报
  • 有哪些网站是织梦做的网站建设投标书报价表
  • 建设带数据搜索的网站网页编辑软件手机版
  • 网站底部版权html代码wordpress文章发布函数
  • php网站后台登陆不上wordpress 用户分组管理
  • 在什么网站能帮人做ppt品牌网站建设9小蝌蚪9
  • 网站程序语言网页设计欣赏案例
  • 建站流程北京seo加盟
  • 建立自己的网站平台成都大学网站建设特色
  • 青岛苍南网站建设网站菜单实现原理