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

焦作网站建设公司哪家好江苏省建设考试网站

焦作网站建设公司哪家好,江苏省建设考试网站,腾讯企业邮箱免费登录入口,电脑网站建设规划目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方#xff1a; 在pom.xml中依赖配置比较繁琐#xff0c;在项目开发时#xff0c;需要自己去找…目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean  SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方 在pom.xml中依赖配置比较繁琐在项目开发时需要自己去找到对应的依赖还需要找到依赖它所配套的依赖以及对应版本否则就会出现版本冲突问题。 在使用Spring框架进行项目开发时需要在Spring的配置文件中做大量的配置这就造成Spring框架入门难度较大学习成本较高。 SpringBoot 框架底层提供了两个非常重要的功能一个是起步依赖一个是自动配置。 通过SpringBoot所提供的起步依赖就可以大大的简化pom文件当中依赖的配置从而解决了Spring框架当中依赖配置繁琐的问题。 通过自动配置的功能就可以大大的简化框架在使用时bean的声明以及bean的配置。我们只需要引入程序开发时所需要的起步依赖项目开发时所用到常见的配置都已经有了我们直接使用就可以了。 起步依赖 起步依赖的原理就是Maven的依赖传递。 如果使用了SpringBoot就不需要繁琐的引入依赖了。只需要引入一个依赖就可以了那就是web开发的起步依赖springboot-starter-web。 问题为什么只需要引入一个web开发的起步依赖web开发所需要的所有的依赖都有了呢 答案因为Maven的依赖传递 在SpringBoot提供的这些起步依赖当中已提供了当前程序开发所需要的所有的常见依赖(官网地址https://docs.spring.io/spring-boot/docs/2.7.7/reference/htmlsingle/#using.build-systems.starters)。 比如springboot-starter-web这是web开发的起步依赖在web开发的起步依赖当中就 集成了web开发中常见的依赖json、web、webmvc、tomcat等。只需要引入这一个起步依赖其他的依赖都会自动的通过Maven的依赖传递进来。 自动配置 SpringBoot的自动配置就是当Spring容器启动后一些配置类、bean对象就自动存入到了IOC容器中 不需要我们手动去声明从而简化了开发省去了繁琐的配置操作。 比如我们要进行事务管理、要进行AOP程序的开发此时就不需要我们再去手动的声明这些bean对象了我们直接使用就可以从而大大的简化程序的开发省去了繁琐的配置操作。 在CommonConfig配置类上添加了一个注解Configuration而Configuration底层就是Component所以配置类CommonConfig最终也是SpringIOC容器当中的一个bean对象 问题在当前项目中我们并没有声明谷歌提供的Gson这么一个bean对象然后我们却可以通过Autowired从Spring容器中注入bean对象那么这个bean对象怎么来的 答案SpringBoot项目在启动时通过自动配置完成了bean对象的创建。 问题当前包com.itheima 第三方依赖中提供的包com.example此时引入进来的第三方依赖当中的bean以及配置类为什么没有生效 答案在类上添加Component注解来声明bean对象时还需要保证Component注解能被Spring的组件扫描到。 SpringBoot项目中的SpringBootApplication注解具有包扫描的作用但是它只会扫描启动类所在的当前包以及子包。 当前包com.itheima 第三方依赖中提供的包com.example扫描不到 解决方案1ComponentScan 组件扫描指定要扫描的包方案2Import 导入使用Import导入的类会被Spring加载到IOC容器中 方案一 SpringBootApplication ComponentScan({com.itheima,com.example}) //指定要扫描的包 public class SpringbootWebConfig2Application { public static void main(String[] args) { SpringApplication.run(SpringbootWebConfig2Application.class, args); } } 进行项目开发时当需要引入大量的第三方的依赖就需要在启动类上配置N多要扫描的包这种方式会很繁琐。而且这种大面积的扫描性能也比较低。 缺点 1. 使用繁琐 2. 性能低 不推荐使用 方案二 Import 导入 导入形式主要有以下几种 1. 导入普通类 2. 导入配置类 3. 导入ImportSelector接口实现类 1.导入普通类  Import(TokenParser.class) //导入的类会被Spring加载到IOC容器中 SpringBootApplication public class SpringbootWebConfig2Application { public static void main(String[] args) { SpringApplication.run(SpringbootWebConfig2Application.class, args); } } 2.导入配置类 Configuration public class HeaderConfig {//配置类 Bean public HeaderParser headerParser(){ return new HeaderParser(); } Bean public HeaderGenerator headerGenerator(){ return new HeaderGenerator(); } } Import(HeaderConfig.class) //导入配置类 SpringBootApplication public class SpringbootWebConfig2Application { public static void main(String[] args) { SpringApplication.run(SpringbootWebConfig2Application.class, args); } } 3.接口实现类 public class MyImportSelector implements ImportSelector {//接口实现类 public String[] selectImports(AnnotationMetadata importingClassMetadata) { //返回值字符串数组数组中封装了全限定名称的类 return new String[]{com.example.HeaderConfig}; } } Import(MyImportSelector.class) //导入ImportSelector接口实现类 SpringBootApplication public class SpringbootWebConfig2Application { public static void main(String[] args) { SpringApplication.run(SpringbootWebConfig2Application.class, args); } } 问题如果基于以上方式完成自动配置当要引入一个第三方依赖时是不是还要知道第三方依赖中有哪些配置类和哪些Bean对象 答案是的。 对程序员来讲很不友好而且比较繁琐 问题当我们要使用第三方依赖依赖中到底有哪些bean和配置类谁最清楚 答案第三方依赖自身最清楚。 结论我们不用自己指定要导入哪些bean对象和配置类了让第三方依赖它自己来指定。  问题怎么让第三方依赖自己指定bean对象和配置类 答案比较常见的方案就是第三方依赖提供一个注解这个注解一般都以EnableXxxx开头的注解注解中封装的就是Import注解 4.使用第三方依赖提供的 EnableXxxxx注解SpringBoot当中所采用的方式 第三方依赖中提供的注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Import(MyImportSelector.class)//指定要导入哪些bean对象或配置类 public interface EnableHeaderConfig { } 在使用时只需在启动类上加上 EnableXxxxx 注解即可 EnableHeaderConfig //使用第三方依赖提供的Enable开头的注解 SpringBootApplication public class SpringbootWebConfig2Application { public static void main(String[] args) { SpringApplication.run(SpringbootWebConfig2Application.class, args); } } 配置优先级 SpringBoot 项目当中支持的三类配置文件 application.properties application.yml application.yaml 配置文件优先级排名从高到低 1. properties配置文件 2. yml配置文件 3. yaml配置文件 在SpringBoot项目当中除了以上3种配置文件外SpringBoot为了增强程序的扩展性除了支持配置文件的配置方式以外还支持另外两种常见的配置方式 1. Java系统属性配置 格式 -Dkeyvalue -Dserver.port9000 2. 命令行参数 格式--keyvalue --server.port10010 优先级 命令行参数 系统属性参数 properties参数 yml参数 yaml参数 项目打包 点击右侧Maven中的package进行打包 显示打包完成 找到jar包的文件目录 在当前目录下输入cmd回车即可在当前目录下打开命令行 通过指令 java -Dserver.port9000 -jar tlias-0.0.1-SNAPSHOT.jar java -jar tlias-0.0.1-SNAPSHOT.jar --server.port9000java -Dserver.port9000 -jar tlias-0.0.1-SNAPSHOT.jar --server.port10010 以上三种方式可更改端口号第三种端口号改为10010因为命令行参数优先级高于java系统属性 通过ctrl c可结束操作 优先级顺序从高到低 命令行参数--xxxxxx java系统属性-Dxxxxxx application.properties application.yml application.yaml忽略 Bean设置 通过Spring当中提供的注解Component以及它的三个衍生注解Controller、Service、Repository来声明IOC容器中的bean对象为应用程序注入运行时所需要依赖的bean对象也就是依赖注入DI。 获取Bean 默认情况下SpringBoot项目在启动的时候会自动的创建IOC容器(也称为Spring容器)并且在启动的过 程当中会自动的将bean对象都创建好存放在IOC容器当中。应用程序在运行时需要依赖什么bean对 象就直接进行依赖注入就可以了。 在Spring容器中提供了一些方法可以主动从IOC容器中获取到bean对象下面介绍3种常用方式 1. 根据name获取bean Object getBean(String name) 2. 根据类型获取bean T T getBean(ClassT requiredType) 3. 根据name获取bean带类型转换 T T getBean(String name, ClassT requiredType) SpringBootTest class SpringbootWebConfig2ApplicationTests { Autowired private ApplicationContext applicationContext; //IOC容器对象 //获取bean对象 Test public void testGetBean(){ //根据bean的名称获取 DeptController bean1 (DeptController) applicationContext.getBean(deptController); System.out.println(bean1); //根据bean的类型获取 DeptController bean2 applicationContext.getBean(DeptController.class); System.out.println(bean2); //根据bean的名称 及 类型获取 DeptController bean3 applicationContext.getBean(deptController, DeptController.class); System.out.println(bean3); } } 默认bean对象是单例模式(只有一个实例对象)。那么如何设置bean对象为非单例呢需要设置bean的作用域。 作用域说明singleton 容器内同名称的 bean 只有一个实例单例默认 prototype 每次使用该 bean 时会创建新的实例非单例 request 每个请求范围内会创建新的实例 web 环境中了解 session 每个会话范围内会创建新的实例 web 环境中了解 application 每个应用范围内会创建新的实例 web 环境中了解 借助Spring中的Scope注解来配置Bean的作用域 测试一 默认bean的作用域为singleton (单例) Lazy //延迟加载第一次使用bean对象时才会创建bean对象并交给ioc容器管理 RestController RequestMapping(/depts) public class DeptController { Autowired private DeptService deptService; public DeptController(){ System.out.println(DeptController constructor ....); } //省略其他代码... } 测试二 Scope(prototype) //bean作用域为非单例 Lazy //延迟加载 RestController RequestMapping(/depts) public class DeptController { Autowired private DeptService deptService; public DeptController(){ System.out.println(DeptController constructor ....); } //省略其他代码... } 第三方Bean  要从IOC容器当中来获取到bean对象需要先拿到IOC容器对象怎么样才能拿到IOC容器呢 想获取到IOC容器直接将IOC容器对象注入进来就可以了 在配置类中定义Bean标识的方法 如果需要定义第三方Bean时 通常会单独定义一个配置类 Configuration //配置类 (在配置类当中对第三方bean进行集中的配置管理) public class CommonConfig { //声明第三方bean Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean //通过Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名 public SAXReader reader(DeptService deptService){ System.out.println(deptService); return new SAXReader(); } } 如果是在项目当中我们自己定义的类想将这些类交给IOC容器管理我们直接使用Component 以及它的衍生注解来声明就可以。 如果这个类它不是我们自己定义的而是引入的第三方依赖当中提供的类而且我们还想将这个类 交给IOC容器管理。此时我们就需要在配置类中定义一个方法在方法上加上一个Bean注解通过这种方式来声明第三方的bean对象。 注解8--SpringBoot原理分析、注解-详解面试高频提问点-CSDN博客
文章转载自:
http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn
http://www.morning.hxbps.cn.gov.cn.hxbps.cn
http://www.morning.cszbj.cn.gov.cn.cszbj.cn
http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn
http://www.morning.cylbs.cn.gov.cn.cylbs.cn
http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn
http://www.morning.ybshj.cn.gov.cn.ybshj.cn
http://www.morning.vattx.cn.gov.cn.vattx.cn
http://www.morning.pbmg.cn.gov.cn.pbmg.cn
http://www.morning.qgqck.cn.gov.cn.qgqck.cn
http://www.morning.qgghr.cn.gov.cn.qgghr.cn
http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn
http://www.morning.hqnsf.cn.gov.cn.hqnsf.cn
http://www.morning.lnmby.cn.gov.cn.lnmby.cn
http://www.morning.qsmmq.cn.gov.cn.qsmmq.cn
http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn
http://www.morning.wkgyz.cn.gov.cn.wkgyz.cn
http://www.morning.pffqh.cn.gov.cn.pffqh.cn
http://www.morning.lonlie.com.gov.cn.lonlie.com
http://www.morning.tdxnz.cn.gov.cn.tdxnz.cn
http://www.morning.tmfm.cn.gov.cn.tmfm.cn
http://www.morning.jyznn.cn.gov.cn.jyznn.cn
http://www.morning.ppqjh.cn.gov.cn.ppqjh.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.ffrys.cn.gov.cn.ffrys.cn
http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn
http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn
http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn
http://www.morning.zlgth.cn.gov.cn.zlgth.cn
http://www.morning.znkls.cn.gov.cn.znkls.cn
http://www.morning.lbgfz.cn.gov.cn.lbgfz.cn
http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn
http://www.morning.sgbjh.cn.gov.cn.sgbjh.cn
http://www.morning.fwllb.cn.gov.cn.fwllb.cn
http://www.morning.lzph.cn.gov.cn.lzph.cn
http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn
http://www.morning.xsfny.cn.gov.cn.xsfny.cn
http://www.morning.lpbrp.cn.gov.cn.lpbrp.cn
http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn
http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn
http://www.morning.kpbq.cn.gov.cn.kpbq.cn
http://www.morning.yghlr.cn.gov.cn.yghlr.cn
http://www.morning.kongpie.com.gov.cn.kongpie.com
http://www.morning.flhnd.cn.gov.cn.flhnd.cn
http://www.morning.zyrp.cn.gov.cn.zyrp.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn
http://www.morning.wgqtj.cn.gov.cn.wgqtj.cn
http://www.morning.cbndj.cn.gov.cn.cbndj.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.wjyyg.cn.gov.cn.wjyyg.cn
http://www.morning.wqcz.cn.gov.cn.wqcz.cn
http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn
http://www.morning.nrwr.cn.gov.cn.nrwr.cn
http://www.morning.rhpy.cn.gov.cn.rhpy.cn
http://www.morning.xhftj.cn.gov.cn.xhftj.cn
http://www.morning.kxnnh.cn.gov.cn.kxnnh.cn
http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn
http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn
http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn
http://www.morning.gcdzp.cn.gov.cn.gcdzp.cn
http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn
http://www.morning.xgchm.cn.gov.cn.xgchm.cn
http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn
http://www.morning.bccls.cn.gov.cn.bccls.cn
http://www.morning.rwbx.cn.gov.cn.rwbx.cn
http://www.morning.jtrqn.cn.gov.cn.jtrqn.cn
http://www.morning.wjndl.cn.gov.cn.wjndl.cn
http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn
http://www.morning.lhytw.cn.gov.cn.lhytw.cn
http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn
http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn
http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn
http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn
http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn
http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn
http://www.morning.bswxt.cn.gov.cn.bswxt.cn
http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn
http://www.morning.zhoer.com.gov.cn.zhoer.com
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.tj-hxxt.cn/news/252270.html

相关文章:

  • 怎么做cc网站查企业数据要去什么网站
  • 做公司网站棋牌百度的广告推广需要多少费用
  • 网站怎么做长尾词建设招标网 官方网站
  • 如今做知乎类网站怎么样无法打开网站若要访问本地iis网站必须安装下列iis组件
  • 双语网站建设浙江设计公司
  • 国外对旅游网站的建设成都线上超市有哪些平台
  • 温州个人网站建设基于WordPress免费博客
  • 制作公司网站济南国画网站建设
  • 律师行业做网站的必要性上海新闻官网
  • 深圳网站建设antnwwordpress 做英汉翻译
  • 济南网站建设哪家强 资海网站开发实训心得800字
  • 老网站绑定新网站如何做?可以转app的网站怎么做
  • 贵阳网站建设seo公众号开发成全视频免费观看在线看小说下载
  • 做网站和做微商城有什么区别网页设计风格分类
  • 为什么百度搜索不到我的网站社交电商
  • 长沙网站建设策划ps美工教程自学网
  • 福州市工程建设监督站网站做跨境电商网站的意义
  • 建材类网站建设方案小说网站排名怎么做
  • 在菲律宾做网站推广怎么样设计型网站建设
  • 创意品牌网站沧州网站建设运营公司
  • 做网站都去哪申请网址关键词推广seo
  • 微网站 htmlwordpress 命令执行时间
  • 广东中山网站建设 光龙青海省高等级公路建设管局网站
  • 宾利棋牌在哪个网站做的广告网站建设手机登录密码是什么啊
  • 请人做网站需要注意什么wordpress模板文件介绍
  • 网站建设公司要求什么网站网站建设设计
  • 网站建设方案数seoul是什么国家
  • 一个网络空间做两个网站做个人网站需要哪些
  • wordpress阅读最多插件企业电商网站优化
  • 深圳住房和建设局网站统一建立网站需要多少钱萍畜湖南岚鸿首选