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

网站开发生命周期模型网站咋开通

网站开发生命周期模型,网站咋开通,赣州建设培训网,手机h5模板你好#xff0c;我是柳岸花开。 在这篇文章中#xff0c;我们将手写模拟SpringBoot的核心流程#xff0c;让大家能够以一种简单的方式了解SpringBoot的大概工作原理。 项目结构 我们创建一个工程#xff0c;包含两个模块#xff1a; springboot模块#xff0c;表示Spring… 你好我是柳岸花开。 在这篇文章中我们将手写模拟SpringBoot的核心流程让大家能够以一种简单的方式了解SpringBoot的大概工作原理。 项目结构 我们创建一个工程包含两个模块 springboot模块表示SpringBoot框架的源码实现。 user包表示用户业务系统用来写业务代码来测试我们所模拟出来的SpringBoot。 首先在springboot模块中添加以下依赖 dependencies    dependency        groupIdorg.springframework/groupId        artifactIdspring-context/artifactId        version5.3.18/version    /dependency    dependency        groupIdorg.springframework/groupId        artifactIdspring-web/artifactId        version5.3.18/version    /dependency    dependency        groupIdorg.springframework/groupId        artifactIdspring-webmvc/artifactId        version5.3.18/version    /dependency    dependency        groupIdjavax.servlet/groupId        artifactIdjavax.servlet-api/artifactId        version4.0.1/version    /dependency    dependency        groupIdorg.apache.tomcat.embed/groupId        artifactIdtomcat-embed-core/artifactId        version9.0.60/version    /dependency/dependencies 在user模块下我们进行正常的开发比如先添加SpringBoot依赖然后定义相关的Controller和Service dependencies    dependency        groupIdorg.example/groupId        artifactIdspringboot/artifactId        version1.0-SNAPSHOT/version    /dependency/dependencies 定义UserController和UserService 在user包下定义UserController和UserService希望能通过运行MyApplication中的main方法直接启动项目并能在浏览器中正常访问到UserController中的某个方法。 RestControllerpublic class UserController {    Autowired    private UserService userService;    GetMapping(test)    public String test(){        return userService.test();    }} 核心注解和核心类 SpringBootApplication这个注解加在应用启动类上即 main方法所在的类。 SpringApplication这个类中有个 run()方法用来启动SpringBoot应用。 Target(ElementType.TYPE)Retention(RetentionPolicy.RUNTIME)ConfigurationComponentScanpublic interface BobSpringBootApplication {}public class BobSpringApplication {    public static void run(Class clazz){        AnnotationConfigWebApplicationContext applicationContext  new AnnotationConfigWebApplicationContext();        applicationContext.register(clazz);        applicationContext.refresh();        startTomcat(applicationContext);    }    private static void startTomcat(WebApplicationContext applicationContext) {        Tomcat tomcat  new Tomcat();Server server  tomcat.getServer();Service service  server.findService(Tomcat);Connector connector  new Connector();connector.setPort(8081);Engine engine  new StandardEngine();engine.setDefaultHost(localhost);Host host  new StandardHost();host.setName(localhost);String contextPath  ;Context context  new StandardContext();context.setPath(contextPath);context.addLifecycleListener(new Tomcat.FixContextListener());host.addChild(context);engine.addChild(host);service.setContainer(engine);service.addConnector(connector);        Tomcat.addServlet(context, dispatcher, new DispatcherServlet(applicationContext));        context.addServletMappingDecoded(/, dispatcher);        try {            tomcat.start();        } catch (LifecycleException e) {            e.printStackTrace();        }        tomcat.getServer().await();    }}BobSpringBootApplicationpublic class MyApplication {    public static void main(String[] args) {        BobSpringApplication.run(MyApplication.class);    }} 实现Tomcat和Jetty的切换 如果项目中有Tomcat的依赖那就启动Tomcat如果有Jetty的依赖就启动Jetty如果两者都没有则报错如果两者都有也报错。 public interface WebServer {    void start();}public class TomcatWebServer implements WebServer {    Override    public void start() {        System.out.println(启动Tomcat);    }}public class JettyWebServer implements WebServer {    Override    public void start() {        System.out.println(启动Jetty);    }} 模拟实现条件注解 Target({ElementType.TYPE, ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)Conditional(BobOnClassCondition.class)public interface BobConditionalOnClass {    String value() default ;}public class BobOnClassCondition implements Condition {    Override    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {        MapString, Object annotationAttributes  metadata.getAnnotationAttributes(BobConditionalOnClass.class.getName());        String className  (String) annotationAttributes.get(value);        try {            context.getClassLoader().loadClass(className);            return true;        } catch (ClassNotFoundException e) {            return false;        }    }} 模拟实现自动配置类 Configurationpublic class WebServiceAutoConfiguration {    Bean    BobConditionalOnClass(org.apache.catalina.startup.Tomcat)    public TomcatWebServer tomcatWebServer() {        return new TomcatWebServer();    }    Bean    BobConditionalOnClass(org.eclipse.jetty.server.Server)    public JettyWebServer jettyWebServer() {        return new JettyWebServer();    }} 在BobSpringApplication中添加获取WebServer的方法 public static WebServer getWebServer(ApplicationContext applicationContext) {    MapString, WebServer webServers  applicationContext.getBeansOfType(WebServer.class);    if (webServers.isEmpty()) {        throw new NullPointerException();    }    if (webServers.size()  1) {        throw new IllegalStateException();    }    return webServers.values().stream().findFirst().get();} 通过以上步骤我们实现了一个简单的SpringBoot并且可以根据依赖切换Tomcat和Jetty。 关注我下期了解 ​ SpringBoot自动配置 ​ ​ ​ ​ 回复 222获取Java面试题合集 ​ 关于我 ​ 一枚爱折腾的Java程序猿专注Spring干货。把路上的问题记录下来帮助那些和我一样的人。 ​ 好奇心强喜欢并深入研究古天文。 ​ 崇尚 个人系统创建做一些时间越长越有价值的事情。思考 把时间留下来 又 每刻都是新的。 本文由 mdnice 多平台发布
http://www.hkea.cn/news/14392787/

相关文章:

  • 手机排行榜网站html网页的代码大全
  • 知名的咨询行业网站制作三合一网站指的是什么意思
  • 东钱湖镇建设局网站网站建设公司要求什么
  • 网站的流程图专业做小程序公司有哪些
  • 大连仟亿科技网站建设公司怎么样制作网站协议书
  • 外贸网站怎么做外链大学校园网站建设方案
  • 外贸站seowordpress编辑器百度
  • 网站建设流程代理商有哪些可以免费做高数题的网站
  • 各种网站开发语言的优缺点企业网站管理规定
  • 做网站虚拟主机推荐怎样向搜索引擎提交网站
  • dw不用代码做网站淮安市建设厅网站
  • 中文网站建设模板下载西安建设银行网站
  • 网站logo设计在线生成小红书关键词检测
  • 浙江建设厅 继续教育 网站首页湖南省政务服务网 网站建设要求
  • 网站营销方式有哪些内容2010网站建设管理
  • 徐汇网站推广公司东莞seo网络优化
  • 怎么进入网站后台管理系统赞助网站怎么做
  • 创建一家网站如何创保健品网站怎么做的
  • 程序员代做网站违法wordpress 安装配置
  • 房管局备案查询网站自己的网站怎么做搜索引擎
  • 漫画网站建设教程视频网站模块建设建议
  • 天津建站方案yzipi主题wordpress
  • 百度网站体检整合营销的概念
  • 网络推广网站怎么做网站开发一般用什么软件有哪些
  • 手机端网站思路wordpress 移动端主题
  • 南皮县网站建设价格社交博客网站开发
  • 揭东建设局网站旅游类网站开发任务书
  • 东莞微网站建设多少钱单位网站建设做到哪个科目
  • 做网站提升公司形象施工企业跨专业接工作是否有效
  • 国外素材网站深圳龙岗发布通告