zoukankan      html  css  js  c++  java
  • springboot

    1.springboot的优点

        快速搭建开发框架;简化配置(避免spring各种xml文件配置,springboot通过javaConfig的方式对spring进行配置);简化maven依赖(提供一系列的starter 来简化pom文件的配置);内嵌tomcat容器;

    javaConfig替代xml配置

    编写pojo类型:@component 注解表示被spring ioc容器进行托管;

    @Component
    public class User {
        @Value("欣宝")
        private String userName;
    
    
        public String getUserName() {
            return userName;
        }
    
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
    
        @Override
        public String toString() {
            return "User{" +
                    "userName='" + userName + '\'' +
                    '}';
        }
    }

    编写javaConfig类:  添加@configuration注解,使其成为javaConfig类,功能跟xml文件一样,@Bean的功能表示这个方法注册的就是bean,方法名为xml文件中的id,方法返回值为该类的对象;

    @Configuration
    public class MyConfig {
        @Bean
        public User getUser(){
            return new User();
        }
    }

    2.springBoot的自动装配

    springboot的启动类:

      

     启动类上有@SpringBootApplication,在@SpringBootApplication中有一个@EnableAutoConfiguration(开启自动配置)的注解,在@EnableAutoConfiguration中有用@import注解导入组件AutoConfigurationImportSelectors.class,该组件中有selectImports方法,该方法会读取spring-boot-autoConfigure jar包下的meta-info/spring.factories文件,查询key为EnableAutoConfiguration的集合,

     并不是将这些配置类全部加载,这些配置类中都有@ConditionalOnXXX注解,通过这个注解判断,满足注解条件的类才会被加载;

    将需要导入的组件以全类名的方式返回,这些组件就被添加到组件中;

     

     简要概括一下自动装备:

    启动类中有一个@SpringBootApplication注解,包含了@EnableAutoConfiguration代表开启自动

    装配,@EnableAutoConfiguration注解会去spring-boot-autoconfigure工程下寻找 META-

    INF/spring.factories 文件,这个文件中列举了所有自动装备类的清单,有一百多个,然后自动读取里

    面的自动装配配置类清单。

    但是这些类不会全部加载,很显然这样非常不合理。但是因为有@ConditionalOn条件注解,满足

    一定条件配置才会生效 如: @ConditionalOnClass(某类.class) 工程中必须包含一些相关的类时,

    配置才会生效。所以说当我们的起步依赖中引入了一些对应的类之后,自动装备的条件满足了,自

    动装备才会被触发。

      

    3.springBoot的自定义注解

      

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import({AutoConfigurationImportSelector.class})
    public @interface EnableAutoConfiguration {
        String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    
        Class<?>[] exclude() default {};
    
        String[] excludeName() default {};
    }

    自定义注解类编写的一些规则:

    1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口.

    2. 参数成员只能用public或默认(default)这两个访问权修饰

    3. 参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组.

    4. 要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,因为你除此之外没有别的获取注解对象的方法

    5. 注解也可以没有定义成员, 不过这样注解就没啥用了

    @Retention 注解

    功能:指明修饰的注解的生存周期,即会保留到哪个阶段。

    RetentionPolicy的取值包含以下三种:

    SOURCE:源码级别保留,编译后即丢弃。

    CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。

    RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。

    @Target 注解

    功能:指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。

    ElementType的取值包含以下几种:

    TYPE:类,接口或者枚举

    FIELD:域,包含枚举常量

    METHOD:方法

    PARAMETER:参数

    CONSTRUCTOR:构造方法

    LOCAL_VARIABLE:局部变量

    ANNOTATION_TYPE:注解类型

    PACKAGE:包

    javaConfig替代xml配置

  • 相关阅读:
    企业微信开发基本步骤
    简单的企业微信开发 前后端
    真分页
    企业微信“三次握手”
    Android项目的图标
    Android项目的目录结构
    Android系统提供了哪些东西,供我们可以开发出优秀的应用程序
    Android中的四层架构,五块区域
    MySQL中的concat函数
    Activity生命周期
  • 原文地址:https://www.cnblogs.com/xiaoxiao1120/p/15616359.html
Copyright © 2011-2022 走看看