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

威海做网站的公司网站新闻页面无法翻页

威海做网站的公司,网站新闻页面无法翻页,微商城小程序哪个好,企业网络营销为什么要选择外包?SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式#xff0c;分别为#xff1a; application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时#xff0c;配置文件会按照它们的优先级生效。 优先级从高到底…SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式分别为 application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时配置文件会按照它们的优先级生效。 优先级从高到底分别为application.peopertiesapplication.ymlapplication.yaml 目前 application.yml 是最主流的方式 3.其他配置方式 Springboot除了以上常见的三种配置方式之外还支持Java系统属性配置和命令行参数配置。 1.Java系统属性配置示例 # 在 java 命令后使用 —D 命令然后书写需要配置的属性即可 # 示例中配置了项目的运行端口为8081即server.port8081 java -Dserver.port8081 -jar [packageName].jar2.命令行参数配置示例 # 在jar包名称之后使用双横杠--,后面紧跟配置的参数即可 java -jar [packageName].jar --server.port8082二 Bean管理 1.获取bean对象 默认情况下Springboot项目在启动时会自动创建bean并且将这些bean都存放在IOC容器中。 如果想手动获取这些bean,则可以通过以下几种示例。 首先需要注入ApplicationContext对象。 在 Spring框架中ApplicationContext是一个接口代表了Spring容器它负责管理Spring应用程序中所有的bean,同时提供了一些方法来获取Bean,注册Bean是整个Spring应用的核心。 默认情况下一个Bean的名称是它的类名名称然后将首字母小写。 例如 DeptController它在IOC容器中的默认名称为 deptController Autowired private ApplicationContext applicationContext; Test void test1(){//1.根据bean的名称来获取bean对象EmpServiceImpl empServiceImpl1 (EmpServiceImpl) applicationContext.getBean(empServiceImpl);System.out.println(empServiceImpl1);//2.根据bean的类型来获取bean对象EmpServiceImpl empServiceImpl2 applicationContext.getBean(EmpServiceImpl.class);System.out.println(empServiceImpl2);//3.根据bean的类型和名称来获取bean对象// 以下方法和示例在bean的默认名称被修改且有多个同类型的bean时尤为有用。EmpServiceImpl empServiceImpl3 applicationContext.getBean(empServiceImpl,EmpServiceImpl.class);System.out.println(empServiceImpl3); }运行以上示例可以看出bean在IOC容器中默认是单例存在的。 如果想要实现每次使用时都是一个新的bean,则需要通过bean的作用域来进行配置。 2.bean的作用域 在Spring中bean支持五种作用域后三种在web环境下才能生效。 默认情况下Bean对象在项目启动时就会默认实例化。如果不希望在项目启动时就初始化可以使用Lazy注解让Bean对象延迟初始化直到第一次使用该Bean时才会进行初始化。 Service Lazy public class EmpServiceImpl extends ServiceImplEmpMapper, Emp implements EmpService{//code... }设置Bean的作用域则需要通过Scope注解来实现。 以下示例中我们将Bean的作用域设置为 prototype即每次使用该Bean时都会创建新对象。 Service Scope(prototype) public class EmpServiceImpl extends ServiceImplEmpMapper, Emp implements EmpService{//code... }现在再次运行前边获取Bean对象的代码示例可以发现三次获取到的Bean对象已经不是同一个。 3.声明第三方bean 如果要申明的Bean来自第三方是无法通过Component及衍生注解来申明的这个时候就需要使用Bean注解。 以 SAXReader 类为例创建一个返回值为SAXReader对象的方法方法名称就是以后被ICO管理的Bean对象名称。 //将方法的返回值交给IOC容器管理称为IOC容器的Bean对象 Bean public SAXReader saxReader(){return new SAXReader(); }在以后需要用到 SAXReader 对象的时候直接注入即可不用去实例化。 Autowired private SAXReader saxReader; Test void test2() throws DocumentException {Document document saxReader.read(xxx); }注意一般情况下我们通常会将所有需要申明的第三方bean对象统一放在一个配置类中这样更加方便维护。 Configuration public class BeanAutoConfig {// 可以通过Bean注解的 name /value 属性来定义bean的名称// 默认情况下bean的名称就是方法名Beanpublic RestTemplate restTemplate(){return new RestTemplate();}}在声明第三方bean对象时如果需要进行依赖注入则只需要指定方法形参即可。Spring会根据类型进行自动装配。 // EmpServiceImpl对象是要注入的bean对象 Bean public RestTemplate restTemplate(EmpServiceImpl empServiceImpl){empServiceImpl.[xxx];return new RestTemplate(); }三 Springboot原理 1.Springboot起步依赖 Springboot整合了以前web开发需要用的一些依赖项目前使用Springboot开发web项目只需要引入 spring-boot-start-web 依赖即可。 归根结底SPringboot起步依赖的原理就是maven的依赖传递。 2.自动配置 当Springboot项目启动后Springboot中的一些配置类bean对象就会自动存入到IOC容器中不需要我们手动去申明。从而简化了开发省去了繁琐的配置。 3.管理第三方包中的Bean 1.配置实现方式1ComponentScan 组件扫描 在启动类上使用 ComponentScan注解重新配置包扫描路径。ComponentScan的basePackages参数支持数据格式当有多个第三方包时可使用数组形式申明。 ComponentScan(basePackages xxx1)或 ComponentScan(basePackages {xxx1,xxx2 })注意使用ComponentScan申明时当前Springboot项目中的包路径也必须包含在内否则当前项目中的bean将会被无法识别。 缺点当项目较大时引入大量的第三方依赖此时启动类将会显得臃肿。 2.配置实现方式2Import 组件导入 使用Import导入的类会被Spring加载到容器中。可以导入普通类配置类以及 ImportSelector 接口的实现类支持数组。 Import({xx1.classxx2.class})实现ImportSelector 接口这里最核心的就是 selectImports方法它返回了需要创建Bean对象的全部类。 public class MyImportSelector implements ImportSelector {Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {//此处的数组内容为需要导入的Bean对象的全类名有多少写多少return new String[]{springboot.demo.GoodStudent};} }然后在启动类上使用Import注解即可。 Import({MyImportSelector.class})单纯使用 Import接口声明第三方Bean,缺点很明显。 3.配置实现方式3第三方依赖提供注解 实际项目中具体第三方依赖需要导入哪些Bean,只有第三方依赖自己知道。所以可以由第三方依赖提供注解然后在项目中引入即可。 此类型注解一般均由 Enable 开头,原理是在自定义注解中封装 Import 注解。 示例 Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Import({MybatisPlusConfig.class,CorsConfig.class,SpringWebConfig.class,BeanAutoConfig.class,RedisConfig.class }) public interface EnableShawnConfig {}在第三方依赖包中定义一个EnableShawnConfig注解然后使用 Import将需要配置的Bean对象都引入进来。最后再在项目中使用该注解即可。 EnableShawnConfig SpringBootApplication public class ShawnServerSystemApplication {public static void main(String[] args) {SpringApplication.run(ShawnServerSystemApplication.class, args);} }4.自动配置原理分析 Springboot核心注解SpringBootApplication SpringBootApplication下的重要注解 SpringBootConfiguration申明当前注解也是一个配置类因为SpringBootConfiguration中也申明了Configuration注解。所以可以直接在启动类中申明第三方的bean对象。EnableAutoConfigurationSpringboot自动配置的核心注解它声明了Import(AutoConfigurationImportSelector.class)AutoConfigurationImportSelector是ImportSelector接口的实现类实现了 selectImports 方法。selectImports 方法返回了需要创建Bean对象的全部信息。ComponentScan组件扫描默认扫描当前引导类及其所在的子包。 自动配置最核心的注解就是EnableAutoConfiguration由源码可知selectImports 方法会读取一个固定目录下后缀名为.imports的文件。 protected ListString getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {ListString configurations ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader()).getCandidates();Assert.notEmpty(configurations,No auto configuration classes found in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you are using a custom packaging, make sure that file is correct.);return configurations; }springboot3.x中META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中配置了需要创建Bean对象的全类名 在Springboot2.x中是通过两个关键文件来读取配置好的全类名的。 spring.factories 是早起Springboot版本中自动配置的文件在后续版本中已经逐渐不再使用。 5.Conditinal注解 Conditinal注解的作用按照一定的条件判断在满足条件后才会注册对应的Bean对象到IOC容器中 它可以作用在类和方法上。 Conditinal本身是一个父级注解它衍生除了很多子级注解 ConditionalOnClass判断环境中是否存在字节码文件有则注册bean对象到IOC容器ConditionalOnMissingBean判断环境中有没有对应的Bean根据类型和名称,没有则注册Bean对象到IOC容器ConditionalOnProperty判断配置文件中是否有对应属性和值有则注册bean对象到IOC容器
http://www.zqtcl.cn/news/168366/

相关文章:

  • 新网站制作市场泰安做网站哪家好
  • 常熟苏州网站建设flash如何制作网站
  • 电商网站都是用什么做的网站服务器维护方案
  • 简述企业网站建设的流程手机怎么自己做网页
  • 网站备案信息管理呼图壁网站建设
  • 网站建设学习资料开发一套软件需要多少钱
  • 大庆网站设计衡阳seo网站推广
  • 基层科普网站建设的现状自己做的网站怎样链接数据库
  • 网站建设工程师的职位要求化妆品行业网站开发
  • 做海报有什么素材网站知乎什么样的蓝色做网站做好看
  • 餐饮网站建设网站wordpress优酷视频插件下载
  • 什么网站做广告效果好wordpress中文cms
  • seo与网站优化广州洲聚网站开发
  • 建一个自己用的网站要多少钱北京网站建设价格天
  • 免费做婚礼邀请函的网站如何设定旅游网站seo核心关键词
  • 网上做问卷调查赚钱哪些网站好全flash网站制作
  • 个人网站备案核验单填写wordpress登录安全插件下载
  • 拖拽做网站cms系统设计
  • 村建站什么部门网站建设步骤图
  • 移动端网站建设的意义中工信融网站建设
  • 网站设计宽屏尺寸盐城网站建设渠道合作
  • 网站所有者查询hexo做网站
  • 杭州专业网站设计策划大数据网站建设和
  • 建一个自己的网站需要多少钱泰州网站快速排名优化
  • 企业网站的建设企业湖南网络推广
  • 山西省建设厅投诉网站郴州新网交友手机版
  • 营销网站建设是什么flash个人网站欣赏
  • 网站建设最简单的教程视频教程建设厅注册中心网站首页
  • 免费做网站凡科wordpress 分享到微信 插件
  • 购物网站项目建设内容有啥网站是专做时尚穿搭