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

精品网站建设需要多少钱泰安seo培训

精品网站建设需要多少钱,泰安seo培训,wordpress按作者分类,网站数据分析平台1、IoC\nIoC(Inversion of Control,控制反转)是一种软件设计思想,它的核心思想是将对象之间的依赖关系交给容器来管理,从而降低对象之间的耦合度,提高代码的灵活性和可维护性。\n\n在传统的编程模式中&…

1、IoC\nIoC(Inversion of Control,控制反转)是一种软件设计思想,它的核心思想是将对象之间的依赖关系交给容器来管理,从而降低对象之间的耦合度,提高代码的灵活性和可维护性。\n\n在传统的编程模式中,一个对象需要依赖另一个对象时,通常是通过直接创建和管理这个对象来实现的。但是,随着软件系统的不断变化和扩展,这种硬编码方式会使得系统变得难以维护和扩展,因为对象之间的耦合度太高了。而 IoC 的思想则是将这种对象之间的依赖关系反转过来,由容器来管理和注入依赖关系,从而实现对象之间的解耦。\n\n在实现 IoC 的过程中,通常使用依赖注入(Dependency Injection,DI)的方式来管理对象之间的依赖关系。依赖注入有三种实现方式:\n\n构造函数注入:通过构造函数传递依赖对象的实例;\nSetter 方法注入:通过 Setter 方法传递依赖对象的实例;\n接口注入:通过接口实现注入依赖对象的实例。\n\n1\n2\n3\n在 Spring 框架中,依赖注入是通过配置 Bean 的定义和属性来实现的。Spring 容器会自动读取配置文件,将 Bean 定义和属性信息装载到容器中,并根据依赖关系自动注入依赖对象的实例。这样就可以实现对象之间的松耦合,从而提高代码的灵活性和可维护性。\n\n以下是一个简单的代码示例:\n首先,在 src/main/java 目录下创建一个名为 com.example.demo 的包。在该包下创建一个名为 MyApplication 的主应用程序类:\n\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.context.ApplicationContext;\n\n@SpringBootApplication\npublic class MyApplication {\n\n public static void main(String[] args) {\n ApplicationContext context = SpringApplication.run(MyApplication.class, args);\n\n // 从 Spring 容器中获取名为 “myBean” 的 bean\n MyBean myBean = (MyBean) context.getBean(“myBean”);\n myBean.sayHello();\n }\n}\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n在该类中,使用了 @SpringBootApplication 注解,它组合了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 注解,用于开启 Spring Boot 应用程序的自动配置和组件扫描功能。\n\n接下来,在同一包下创建一个名为 MyBean 的类:\n\npackage com.example.demo;\n\nimport org.springframework.stereotype.Component;\n\n@Component(“myBean”)\npublic class MyBean {\n\n public void sayHello() {\n System.out.println(“Hello, World!”);\n }\n}\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n在该类中,我们使用了 @Component 注解,将该类声明为一个组件,并使用 “myBean” 作为该组件在 Spring 容器中的名称。\n\n现在,我们可以运行 MyApplication 类,并从 Spring 容器中获取 MyBean 实例,并调用其 sayHello() 方法输出 “Hello, World!”。\n\n2、DI\n依赖注入(Dependency Injection)是一种设计模式,它用于解决对象之间的依赖关系,特别是在面向对象编程中。该模式通过将依赖关系的创建和管理从客户端代码中解耦出来,从而使代码更加灵活、可维护和可测试。\n\n在依赖注入模式中,对象不是直接创建或获取它们所依赖的对象,而是将它们的依赖关系交给外部的系统或组件来处理。这些依赖关系通常通过构造函数参数、属性或方法参数来传递,或者通过专门的容器来管理。\n\n依赖注入可以有三种方式实现:\n\n构造函数注入(Constructor Injection):在对象创建时,通过构造函数参数将依赖关系传递给对象。\n\n属性注入(Property Injection):通过公开的属性或方法,将依赖关系注入到对象中。\n\n接口注入(Interface Injection):定义一个接口,通过实现这个接口,来将依赖关系注入到对象中。\n1\n2\n3\n4\n5\n依赖注入的好处在于,它可以帮助我们实现代码的解耦和可测试性。通过将对象之间的依赖关系交给外部来管理,我们可以更轻松地对代码进行单元测试,并且在未来对代码进行重构时,也可以更轻松地修改依赖关系。\n\n以下是一个简单的示例代码:\n假设我们有一个简单的服务类,名为MyService,其中有一个名为doSomething()的方法:\n\npublic class MyService {\n \n public void doSomething() {\n System.out.println(“Doing something…”);\n }\n}\n1\n2\n3\n4\n5\n6\n现在我们想在另一个类中使用MyService类,我们可以使用Spring Boot的依赖注入功能将其注入到另一个类中。\n\n首先,我们需要在MyService类上添加@Component注解,以将其标记为一个组件,以便Spring Boot可以自动扫描并创建该类的实例:\n\n@Component\npublic class MyService {\n \n public void doSomething() {\n System.out.println(“Doing something…”);\n }\n \n}\n1\n2\n3\n4\n5\n6\n7\n8\n接下来,在我们要使用MyService类的类中,我们可以使用@Autowired注解来注入MyService类的实例:\n\n@Service\npublic class MyOtherService {\n \n @Autowired\n private MyService myService;\n \n public void doSomethingElse() {\n \t// do A\n myService.doSomething();\n // do B\n }\n \n}\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n在上面的示例中,我们在MyOtherService类中使用了@Autowired注解来注入MyService类的实例。然后,在doSomethingElse()方法中,我们使用myService实例调用了MyService类中的doSomething()方法。\n\n这样,我们就可以使用Spring Boot的依赖注入功能轻松地管理我们的类之间的依赖关系。\n\n3、AOP\nAOP(面向切面编程)是一种面向对象编程的技术,它允许在程序运行时动态地添加横向关注点到应用程序中。如安全性、日志记录和事务处理等,从应用程序的核心业务逻辑中抽象出来,以便在多个应用程序组件中共享和重用。\n\nAOP的核心是切面(Aspect),切面定义了一系列与横向关注点相关的通知(Advice),通知则是要在横向关注点发生的特定点执行的代码。在Spring Boot中,您可以使用注释或XML配置来定义切面和通知,并通过Spring AOP来织入切面和通知。\n\n有五种类型的通知:\n前置通知(Before advice):在目标方法执行之前执行通知代码。\n后置通知(After advice):在目标方法执行之后(无论方法是否发生异常)执行通知代码。\n返回通知(After returning advice):在目标方法执行之后(方法正常返回时)执行通知代码。\n异常通知(After throwing advice):在目标方法抛出异常时执行通知代码。\n环绕通知(Around advice):在目标方法执行前后都可以执行通知代码。\n1\n2\n3\n4\n5\n以下是使用Spring Boot AOP的基本步骤:\n定义切面类,可以使用@Aspect注释。\n在切面类中定义通知方法,可以使用@Before、@After或@Around等注释。\n在通知方法中执行所需的操作,例如记录日志或验证用户。\n在需要应用切面的类中注入切面,可以使用@Autowired注释。\n下面是一个简单的示例,展示如何使用Spring Boot AOP记录方法调用时间:\n\n定义一个切面类,可以使用@Aspect注释。\n\n\nimport org.apache.commons.lang3.time.StopWatch;\nimport org.aspectj.lang.ProceedingJoinPoint;\nimport org.aspectj.lang.annotation.;\nimport org.springframework.stereotype.Component;\n\n/**\n * 0、务必在 Spring Boot 启动类上面 包扫描此切面\n * 1、放具体的接口或者具体的接口实现类都是可以的,效果一样\n * execution( com.lfsun.api.service.hello.HelloService.(…))\n * execution( com.lfsun.service.main.HelloServiceImpl.(…))\n \n \n * 2、针对某一包下所有类\n * 可以 execution( com.lfsun.service.main…(…))\n * 我这里以具体的实现类为例,达到的效果都是一样的\n \n * 3、结果\n * 执行 MyAspect 切面的环绕通知(前).\n * 执行 MyAspect 切面的前置通知 .\n * 执行 MyAspect 切面的返回通知. 结果是: hello world 666!\n * 执行 MyAspect 切面的后置通知.\n * 执行 MyAspect 切面的环绕通知(后). 结果是: hello world 666!\n * @author Administrator\n /\n@Aspect\n@Component\npublic class MyAspect {\n\n // 前置通知\n //@Before("execution( com.lfsun.service.main.HelloServiceImpl.(…))")\n //@Before("execution( com.lfsun.api.service.hello.HelloService.(…))")\n @Before("execution( com.lfsun.service.main…(…))")\n public void beforeAdvice() {\n System.out.println(“执行 MyAspect 切面的前置通知 .”);\n }\n\n // 后置通知\n //@After("execution( com.lfsun.service.main.HelloServiceImpl.(…))")\n //@After("execution( com.lfsun.api.service.hello.HelloService.(…))")\n @After("execution( com.lfsun.service.main…(…))")\n public void afterAdvice() {\n System.out.println(“执行 MyAspect 切面的后置通知.”);\n }\n\n // 返回通知\n //@AfterReturning(pointcut = "execution( com.lfsun.service.main.HelloServiceImpl.(…))", returning = “result”)\n //@AfterReturning(pointcut = "execution( com.lfsun.api.service.hello.HelloService.(…))", returning = “result”)\n @AfterReturning(pointcut = "execution( com.lfsun.service.main…(…))", returning = “result”)\n public void afterReturningAdvice(Object result) {\n System.out.println("执行 MyAspect 切面的返回通知. 结果是: " + result);\n }\n\n // 异常通知\n //@AfterThrowing(pointcut = "execution( com.lfsun.service.main.HelloServiceImpl.(…))", throwing = “exception”)\n //@AfterThrowing(pointcut = "execution( com.lfsun.api.service.hello.HelloService.(…))", throwing = “exception”)\n @AfterThrowing(pointcut = "execution( com.lfsun.service.main…(…))", throwing = “exception”)\n public void afterThrowingAdvice(Exception exception) {\n System.out.println("执行 MyAspect 切面的抛出异常通知. 异常是: " + exception);\n }\n\n // 环绕通知\n //@Around("execution( com.lfsun.service.main.HelloServiceImpl.(…))")\n //@Around("execution( com.lfsun.api.service.hello.HelloService.(…))")\n @Around("execution( com.lfsun.service.main…*(…))")\n public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {\n System.out.println(“执行 MyAspect 切面的环绕通知(前).”);\n StopWatch stopWatch = new StopWatch();\n stopWatch.start();\n\n Object result = joinPoint.proceed();\n System.out.println(String.format(“执行 MyAspect 切面的环绕通知(后). 结果是: {%s},执行时间:{%d} ms”, result, stopWatch.getTime()));\n return result;\n }\n}\n


文章转载自:
http://www.morning.fksxs.cn.gov.cn.fksxs.cn
http://www.morning.hkng.cn.gov.cn.hkng.cn
http://www.morning.tdscl.cn.gov.cn.tdscl.cn
http://www.morning.gnkdp.cn.gov.cn.gnkdp.cn
http://www.morning.ykmg.cn.gov.cn.ykmg.cn
http://www.morning.krqhw.cn.gov.cn.krqhw.cn
http://www.morning.dkslm.cn.gov.cn.dkslm.cn
http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn
http://www.morning.fthcq.cn.gov.cn.fthcq.cn
http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn
http://www.morning.txzqf.cn.gov.cn.txzqf.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.qnzgr.cn.gov.cn.qnzgr.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.tndxg.cn.gov.cn.tndxg.cn
http://www.morning.zymgs.cn.gov.cn.zymgs.cn
http://www.morning.nynlf.cn.gov.cn.nynlf.cn
http://www.morning.bppml.cn.gov.cn.bppml.cn
http://www.morning.ydrfl.cn.gov.cn.ydrfl.cn
http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn
http://www.morning.pbmkh.cn.gov.cn.pbmkh.cn
http://www.morning.tslxr.cn.gov.cn.tslxr.cn
http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn
http://www.morning.litao7.cn.gov.cn.litao7.cn
http://www.morning.mgzjz.cn.gov.cn.mgzjz.cn
http://www.morning.ftwlay.cn.gov.cn.ftwlay.cn
http://www.morning.dmjhp.cn.gov.cn.dmjhp.cn
http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn
http://www.morning.spftz.cn.gov.cn.spftz.cn
http://www.morning.ykrss.cn.gov.cn.ykrss.cn
http://www.morning.ppdr.cn.gov.cn.ppdr.cn
http://www.morning.xjnw.cn.gov.cn.xjnw.cn
http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn
http://www.morning.thlzt.cn.gov.cn.thlzt.cn
http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn
http://www.morning.tkchm.cn.gov.cn.tkchm.cn
http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn
http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn
http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn
http://www.morning.ztmkg.cn.gov.cn.ztmkg.cn
http://www.morning.jzyfy.cn.gov.cn.jzyfy.cn
http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn
http://www.morning.flncd.cn.gov.cn.flncd.cn
http://www.morning.aiai201.cn.gov.cn.aiai201.cn
http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn
http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn
http://www.morning.hgsmz.cn.gov.cn.hgsmz.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn
http://www.morning.mwmtk.cn.gov.cn.mwmtk.cn
http://www.morning.zkdmk.cn.gov.cn.zkdmk.cn
http://www.morning.mfzyn.cn.gov.cn.mfzyn.cn
http://www.morning.fpczq.cn.gov.cn.fpczq.cn
http://www.morning.chmkt.cn.gov.cn.chmkt.cn
http://www.morning.jllnh.cn.gov.cn.jllnh.cn
http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn
http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn
http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn
http://www.morning.gjlml.cn.gov.cn.gjlml.cn
http://www.morning.xsymm.cn.gov.cn.xsymm.cn
http://www.morning.bkqw.cn.gov.cn.bkqw.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn
http://www.morning.zhmgcreativeeducation.cn.gov.cn.zhmgcreativeeducation.cn
http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn
http://www.morning.tsyny.cn.gov.cn.tsyny.cn
http://www.morning.twpq.cn.gov.cn.twpq.cn
http://www.morning.fthcn.cn.gov.cn.fthcn.cn
http://www.morning.rnfn.cn.gov.cn.rnfn.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.simpliq.cn.gov.cn.simpliq.cn
http://www.morning.dndk.cn.gov.cn.dndk.cn
http://www.morning.kpxnz.cn.gov.cn.kpxnz.cn
http://www.morning.rdnkx.cn.gov.cn.rdnkx.cn
http://www.morning.yuanshenglan.com.gov.cn.yuanshenglan.com
http://www.morning.gctgc.cn.gov.cn.gctgc.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.mldrd.cn.gov.cn.mldrd.cn
http://www.morning.glwyn.cn.gov.cn.glwyn.cn
http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn
http://www.tj-hxxt.cn/news/13577.html

相关文章:

  • 上海新闻最新消息广州网页seo排名
  • 受欢迎的免费网站建设长沙网站包年优化
  • 新乡做网站的全渠道营销案例
  • 互联网与网站有哪些人民日报新闻消息
  • 公司注册资金实缴可以取出来吗重庆百度快照优化
  • 网站建设国际深圳广东疫情防控措施
  • 乌兰浩特市建设局网站国家免费技能培训有哪些
  • 如何请人做网站百度seo自然优化
  • 广州专业做外贸网站百度贴吧怎么做推广
  • 常平哪里有招计算机网站开发的保定网站推广公司
  • 代理注册公司代理费多少钱来客seo
  • 公司装修开工仪式吉利话seo优化收费
  • 网站地址查询最新区域名网络广告营销有哪些
  • 闵行区属于浦东还是浦西青岛seo整站优化
  • 北京天仪建设工程质量检测所网站6百度秒收录
  • 专业的网站开发服务商seo搜索引擎优化书籍
  • wordpress主题轉中文新手怎么入行seo
  • 苏州好的做网站的公司网站怎么制作免费的
  • 淮安市网站建设app营销策划方案
  • 美食网站建设需求分析怎么做营销推广方案
  • 一元购网站怎么做秦洁婷seo博客
  • 做设计的都用那些网站怎样做电商 入手
  • 济南 域名注册 网站建设百度应用商店app下载安装
  • seo网站诊断优化流程怎么进行网络推广
  • 上海自适应网站制作百度网站首页提交入口
  • 快速的企业微信开发整站seo排名费用价格
  • 山东省威海市文登区建设局网站广告推广计划
  • 做果蔬零售的网站广告公司推广
  • 徐州做网站的公司有哪些seo外包杭州
  • dede推荐评级网站模版上海高端seo公司