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

无锡网站建设优化建站族谱网站建设方案

无锡网站建设优化建站,族谱网站建设方案,中国菲律宾关系,网站备案网站前置审批简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 p… 简单手写SpringIOC框架 环境搭建基于XML方式项目结构项目代码运行结果 基于注解方式项目结构项目代码运行结果 简单手写SpringIOC框架核心原理基于XML方式原理项目结构项目代码运行结果 基于注解方式原理项目结构项目代码运行结果 环境搭建 基于XML方式 项目结构 项目代码 pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom/groupIdartifactIdspring/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.2.1.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.1.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.1.RELEASE/version/dependency/dependencies/projectUserBean.java package com.spring.bean;/*** author honey* date 2023-08-08 14:58:16*/ public class UserBean { }spring.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean iduserBean classcom.spring.bean.UserBean//beansSpringTest01.java package com.spring.test;import com.spring.bean.UserBean; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** author honey* date 2023-08-08 14:59:56*/ public class SpringTest01 {public static void main(String[] args) {// 读取spring.xmlClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);// 从IOC容器中读取对象UserBean userBean applicationContext.getBean(userBean, UserBean.class);System.out.println(userBean);} }运行结果 基于注解方式 项目结构 项目代码 ScanBean.java package com.spring.bean.scan;import org.springframework.stereotype.Component;/*** author honey* date 2023-08-08 16:37:26*/ Component public class ScanBean { }SpringConfig.java package com.spring.config;import com.spring.bean.UserBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;/*** author honey* date 2023-08-08 16:30:21*/ Configuration ComponentScan(value {com.spring.bean.scan}) public class SpringConfig {Bean(name user)public UserBean userBean() {return new UserBean();} }SpringTest02.java package com.spring.test;import com.spring.bean.UserBean; import com.spring.bean.scan.ScanBean; import com.spring.config.SpringConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** author honey* date 2023-08-08 16:31:25*/ public class SpringTest02 {public static void main(String[] args) {// 加载SpringConfigAnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(SpringConfig.class);// 从IOC容器中读取对象UserBean userBean applicationContext.getBean(user, UserBean.class);System.out.println(userBean);ScanBean scanBean applicationContext.getBean(scanBean, ScanBean.class);System.out.println(scanBean);} }运行结果 简单手写SpringIOC框架 核心原理 底层使用map集合管理对象keybeanIdvalue实例对象 private final MapString, Object beanMap new ConcurrentHashMap();基于XML方式 原理 基于反射工厂模式DOM技术 使用DOM技术解析spring.xml文件获取bean的id和class属性根据类的完整路径使用反射技术初始化对象使用工厂模式管理初始化对象 项目结构 项目代码 pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom/groupIdartifactIdext-spring-ioc/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.2.1.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.1.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.1.RELEASE/version/dependencydependencygroupIddom4j/groupIdartifactIddom4j/artifactIdversion1.6.1/version/dependency/dependencies/projectUserBean.java package com.spring.bean;/*** author honey* date 2023-08-08 16:56:32*/ public class UserBean { }spring.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean iduserBean classcom.spring.bean.UserBean//beansSpringIocXml.java package com.spring.ext;import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.core.io.ClassPathResource;import java.io.File; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;/*** author honey* date 2023-08-08 16:57:17*/ public class SpringIocXml {private final MapString, Object beanMap new ConcurrentHashMap();public SpringIocXml() throws IOException, DocumentException {init();}public T T getBean(String name) {return (T) beanMap.get(name);}/*** 初始化IOC容器*/private void init() throws IOException, DocumentException {// 解析spring.xml配置ClassPathResource classPathResource new ClassPathResource(spring.xml);File xmlFile classPathResource.getFile();SAXReader saxReader new SAXReader();Document doc saxReader.read(xmlFile);// 获取根节点Element rootElement doc.getRootElement();// 获取bean节点信息ListElement beans rootElement.elements(bean);for (Element bean : beans) {try {String beanId bean.attribute(id).getValue();String classPath bean.attribute(class).getValue();// 使用反射机制初始化对象并将对象存入Map集合Class? clazz Class.forName(classPath);Object object clazz.newInstance();beanMap.put(beanId, object);} catch (Exception e) {e.printStackTrace();}}}}SpringTest01.java package com.spring.test;import com.spring.bean.UserBean; import com.spring.ext.SpringIocXml; import org.dom4j.DocumentException;import java.io.IOException;/*** author honey* date 2023-08-08 17:04:35*/ public class SpringTest01 {public static void main(String[] args) throws DocumentException, IOException {SpringIocXml springIocXml new SpringIocXml();UserBean userBean springIocXml.getBean(userBean);System.out.println(userBean);} }运行结果 基于注解方式 原理 基于反射工厂模式实现 判断配置类上是否有Configuration注解获取配置类中的所有方法判断方法上是否有Bean注解如果有则获取方法的返回值作为实例对象判断配置类上是否有ComponentScan注解如果有则扫描指定包下的所有类并判断类上是否有Component注解如果有则通过反射技术初始化对象使用工厂模式管理初始化对象/实例对象 项目结构 项目代码 pom.xml dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.7/version /dependencyScanBean.java package com.spring.bean.scan;import org.springframework.stereotype.Component;/*** author honey* date 2023-08-09 14:28:33*/ Component public class ScanBean { }SpringConfig.java package com.spring.config;import com.spring.bean.UserBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;/*** author honey* date 2023-08-09 14:26:40*/ Configuration ComponentScan(value {com.spring.bean.scan}) public class SpringConfig {Beanpublic UserBean userBean() {return new UserBean();} }SpringIocAnnotation.java package com.spring.ext;import cn.hutool.core.lang.ClassScanner; import cn.hutool.core.util.StrUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component;import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap;/*** author honey* date 2023-08-09 14:12:21*/ public class SpringIocAnnotation {private final Object config;private final MapString, Object beanMap new ConcurrentHashMap();public SpringIocAnnotation(Object config) {this.config config;init();}/*** 初始化IOC容器*/public void init() {// 判断配置类上是否有Configuration注解Configuration configuration this.config.getClass().getDeclaredAnnotation(Configuration.class);if (configuration null) {return;}// 处理Bean注解Class? clazz config.getClass();Method[] declaredMethods clazz.getDeclaredMethods();for (Method method : declaredMethods) {// 判断方法上是否有Bean注解Bean bean method.getDeclaredAnnotation(Bean.class);if (bean ! null) {try {// 获取beanIdString[] value bean.value();String beanId value.length 0 ? value[0] : method.getName();// 获取方法的返回值Object object method.invoke(config);beanMap.put(beanId, object);} catch (Exception e) {e.printStackTrace();}}}// 处理Component注解ComponentScan componentScan clazz.getDeclaredAnnotation(ComponentScan.class);if (componentScan ! null) {for (String packageName : componentScan.value()) {try {// 扫描指定包下的所有类SetClass? classes ClassScanner.scanPackage(packageName);for (Class? c : classes) {// 判断类上是否有Component注解Annotation component c.getDeclaredAnnotation(Component.class);if (component ! null) {try {// 获取beanIdString beanId StrUtil.lowerFirst(c.getSimpleName());// 通过反射技术初始化对象Object beanObject c.newInstance();beanMap.put(beanId, beanObject);} catch (Exception e) {e.printStackTrace();}}}} catch (Exception e) {e.printStackTrace();}}}}public T T getBean(String name) {return (T) beanMap.get(name);} }SpringTest02.java package com.spring.test;import com.spring.bean.UserBean; import com.spring.bean.scan.ScanBean; import com.spring.config.SpringConfig; import com.spring.ext.SpringIocAnnotation;/*** author honey* date 2023-08-09 14:24:36*/ public class SpringTest02 {public static void main(String[] args) {SpringIocAnnotation springIocAnnotation new SpringIocAnnotation(new SpringConfig());UserBean userBean springIocAnnotation.getBean(userBean);System.out.println(userBean);ScanBean scanBean springIocAnnotation.getBean(scanBean);System.out.println(scanBean);} }运行结果
http://www.w-s-a.com/news/463497/

相关文章:

  • 工程建设标准强制性条文最新版本网站关键词排名优化应该怎么做
  • 网站网页设计内容品牌高端网站建设公司
  • 网站开发报价 福州中国建筑网官网手机版
  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的
  • 南京网站做的好的公司猪八戒网站做推广怎么样
  • 建站收费标准福州网站搭建
  • 做防护用品的网站欧美网站建设风格特点
  • 龙华做网站联系电话北京软件开发培训班
  • 做网站运营有前途网站的建设与管理的心得体会
  • 河南网站推广怎么做网页制作免费下载
  • 网站如何屏蔽中国ip商丘网站建设的公司哪家好
  • 东莞广告公司东莞网站建设价格鹤壁哪有做网站的
  • 门户网站界面设计logo设计商标设计
  • 建设银行网站驱动宁波网站建设相信荣胜网络
  • 八里河网站建设项目建设可行性企业品牌推广方式有哪些
  • jsp网站开发之html入门知识广州服装设计公司
  • 做电商看的网站有哪些个人网页制作成品免费
  • 沈阳建站多少钱境外网站 备案
  • 提交网站收录入口斗图在线制作
  • 建设化妆品网站服务医药网站前置审批
  • 购物网站修改注册信息模块的分析怎么注册公司logo
  • 那个网站可以做域名跳转的青岛网站建设定制
  • 网站登记模板互联网技术发展及其影响的调查
  • 北京专业的网站建设西安企业家名单