SpringBoot常用配置類大全

SpringBoot配置类 监听器接口主要用于监听ServletContext对象的创建和销毁事件。它关注的是Web应用的启动和关闭,以及ServletContext对象的状态变化。创建一个监听器类,实现接口@OverrideSystem.out.println("MyServletContextListener:监听器启动");@OverrideSystem.out.println("MyServletContextListener:监听器销毁"); 阅读详情

SpringBoot常用配置類大全

【结合源码看注解】

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
SpringBootConfiguration:标注springboot 配置类
    
  SpringBootConfiguration:标注springboot 配置类 
    
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
    底层是Configuration: spring 标注配置类的 一开始是做配置文件,有些配置文件就写成配置类 通过改注解告诉程序这个一个配置类,而Configruation 
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component  

@EnableAutoConfiguration 开启自动配置包注解
@AutoConfigurationPackage下的注解 也有import
@AutoConfigurationPackage下的注解 也有import

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
导入的组件由Registrar.class
这个Import真正意义是去扫描springboot中 SpringbootApplication标注的类 下的所以组件到spring容器中
    static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {
        Registrar() {
        }

        public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
            AutoConfigurationPackages.register(registry, (new AutoConfigurationPackages.PackageImport(metadata)).getPackageName());
        }
真正意义是去扫描springboot中 SpringbootApplication标注的类 下的所以组件到spring容器中
所以编写springboot项目的时候,SpingbootApplication 标注的类一定在所有包,类之外
@import
@Import({AutoConfigurationImportSelector.class})
这给imoprt 是说明要导入那些组件
    
    //将需要导入的组件以全类名返回,就会添加到容器
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        if (!this.isEnabled(annotationMetadata)) {
            return NO_IMPORTS;
        } else {
            AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
            AnnotationAttributes attributes = this.getAttributes(annotationMetadata);
            List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
            configurations = this.removeDuplicates(configurations);
            Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);
            this.checkExcludedClasses(configurations, exclusions);
            configurations.removeAll(exclusions);
            configurations = this.filter(configurations, autoConfigurationMetadata);
            this.fireAutoConfigurationImportEvents(configurations, exclusions);
            return StringUtils.toStringArray(configurations);
        }
    }  
    这给String所返回的数据就是 给spring容器导入的xxxAutoConfiguration 自动配置类
    给容器中这个场景所需要的所有组件,并配置号这些组件,有了这些配置,就不用手动比那些配置和组件
      getCandidateConfigurations 中
        SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());
第一给参数:EnableAutoConfiguration.class;  开启的配置类
第二个参数:ClassLoader; 类加载器  获取到资源 把资源作为一个proertise 
    
    SpringBoot在启动时候从类路径下META-INFO/spring.factorise中获取EnableConfigration 指定的值,将这些值自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置,以前需要自动配置的类,自动配置都做了

    springboot 都帮我们整合了:javaee自动整合和配置都在 spring-boot-aotoConfigure:...Release

Spring Boot属性配置文件详解

相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷。我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用。

在之前的各篇文章中都有提及关于application.properties的使用,主要用来配置数据库连接、日志相关配置等。除了这些配置内容之外,本文将具体介绍一些在application.properties配置中的其他特性和使用方法。

自定义属性与加载

我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义:

com.didispace.blog.name=程序猿DDcom.didispace.blog.title=Spring Boot教程

然后通过@Value("${属性名}")注解来加载对应的配置属性,具体如下:

@Componentpublic class BlogProperties {    @Value("${com.didispace.blog.name}")    private String name;    @Value("${com.didispace.blog.title}")    private String title;    // 省略getter和setter}

按照惯例,通过单元测试来验证BlogProperties中的属性是否已经根据配置文件加载了。

@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(Application.class)public class ApplicationTests {	@Autowired	private BlogProperties blogProperties;	@Test	public void getHello() throws Exception {		Assert.assertEquals(blogProperties.getName(), "程序猿DD");		Assert.assertEquals(blogProperties.getTitle(), "Spring Boot教程");	}}

参数间的引用

在application.properties中的各个参数之间也可以直接引用来使用,就像下面的设置:

com.didispace.blog.name=程序猿DDcom.didispace.blog.title=Spring Boot教程com.didispace.blog.desc=${com.didispace.blog.name}正在努力写《${com.didispace.blog.title}》

com.didispace.blog.desc参数引用了上文中定义的name和title属性,最后该属性的值就是程序猿DD正在努力写《Spring Boot教程》。

使用随机数

在一些情况下,有些参数我们需要希望它不是一个固定的值,比如密钥、服务端口等。Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。

# 随机字符串com.didispace.blog.value=${random.value}# 随机intcom.didispace.blog.number=${random.int}# 随机longcom.didispace.blog.bignumber=${random.long}# 10以内的随机数com.didispace.blog.test1=${random.int(10)}# 10-20的随机数com.didispace.blog.test2=${random.int[10,20]}

通过命令行设置属性值

相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888,通过使用–server.port属性来设置xxx.jar应用的端口为8888。

在命令行运行时,连续的两个减号--就是对application.properties中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888命令,等价于我们在application.properties中添加属性server.port=8888,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。

通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。

多环境配置

我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。

对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包,Spring Boot也不例外,或者说更加简单。

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-test.properties:测试环境
  • application-prod.properties:生产环境

至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。

如:spring.profiles.active=test就会加载application-test.properties配置文件内容

下面,以不同环境配置不同的服务端口为例,进行样例实验。

  • 针对各环境新建不同的配置文件application-dev.properties、application-test.properties、application-prod.properties
  • 在这三个文件均都设置不同的server.port属性,如:dev环境设置为1111,test环境设置为2222,prod环境设置为3333
  • application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置
  • 测试不同配置的加载
    • 执行java -jar xxx.jar,可以观察到服务端口被设置为1111,也就是默认的开发环境(dev)
    • 执行java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端口被设置为2222,也就是测试环境的配置(test)
    • 执行java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端口被设置为3333,也就是生产环境的配置(prod)

按照上面的实验,可以如下总结多环境的配置思路:

  • application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置
  • application-{profile}.properties中配置各个环境不同的内容
  • 通过命令行方式去激活不同环境的配置
springBoot 中自定義全局异常
@ControllerAdvice
public class GlobalException {

    /**
     * TODO  可以升华
     * 自定义全局异常
     *
     * @param ex
     * @return
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ServerResponse globalHandle(Exception ex) {
        StringBuffer stringBuffer = new StringBuffer();
        /*MyGlobalException 为自定义异常 */
        if (ex instanceof MyGlobalException) {
            return ServerResponse.createByError(ex.getMessage());
        }
        //BindException  为检验的异常  
        if (ex instanceof BindException) {
            BindException bindException = (BindException) ex;
            List<ObjectError> allErrors = bindException.getAllErrors();
            for (ObjectError error : allErrors) {
                String defaultMessage = error.getDefaultMessage();

                stringBuffer.append(error.getDefaultMessage());
            }
            return ServerResponse.createByError(stringBuffer.toString());
        }

        return ServerResponse.createByError(ex.getMessage());
    }
}
自定义异常
继承 Excetion 类 实现自己的异常

public class MyGlobalException extends Exception {
    public MyGlobalException(String message) {
        super(message);
    }
}
拦截器的配置类
通過继承 HandlerInterceptor  实现其下的三个方法
public class UrlInterceptor implements HandlerInterceptor {

    private static final Logger logger = LoggerFactory.getLogger(UrlInterceptor.class);

    private static final String GET_ALL = "/gg";
    private static final String GET_HEADER = "/userjsonview";

    /**
     * 进入Controller层之前拦截请求,默认是拦截所有请求
     *
     * @param request
     * @param response
     * @param handler
     * @return 是否拦截当前请求,true表示拦截当前请求,false表示不拦截当前请求
     * @throws Exception 可能出现的异常
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("go into preHandle.....");
        String requestURI = request.getRequestURI();
        logger.info(requestURI);
        if (requestURI.contains(GET_ALL)) {
            throw new MyGlobalException("没有权限");
        }
        if (requestURI.contains(GET_HEADER)) {
            response.sendRedirect("/login");
            return true;
        }
        return true;
    }

    /**
     * 处理完请求后但还未渲染试图之前进行的操作
     *
     * @param request
     * @param response
     * @param handler
     * @param modelAndView mv
     * @throws Exception E
     */

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        logger.info("go into postHandle ...");

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        logger.info("go into afterCompletion ...");


        logger.info("ex: " + ex);

    }
    
    实现WebMvcConfigurer接口 在addInterceptors方法中
 
    
    

实现WebMvcConfigurer接口 的addInterceptors方法

   @Configuration
   //标注为sringboot的配置类

public class MvcConfig implements WebMvcConfigurer {
    /*UrlInterceptor
    将它注入到Sprig容器,交给spring管理
    * */
  /*  @Bean
    public UrlInterceptor urlInterceptor() {

        return new UrlInterceptor();
    }*/

    
    
    /*将UrlInterceptor注册到
    addInterceptor
    * */
   
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        /*
       addPathPatterns()  需要拦截的路径
       excludePathPatterns 不需要拦截的路径
       addInterceptor 返回的是InterceptorRegistration对象
        */
        registry.addInterceptor(new UrlInterceptor()).addPathPatterns("/**");

    }

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper = new UrlPathHelper();
        urlPathHelper.setRemoveSemicolonContent(false);
        configurer.setUrlPathHelper(urlPathHelper);

    }
    
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        /* 跨域设置‘
         * addMapping   跨域的映射地址
         * allowedOrigins : 允许跨域的请求源
         * allowedMethods: 允许跨域的方法
         * allowedHeaders :允许跨域的头部
         * allowCredentials : 设置允许cookie session...数据跨域
         * */
        registry.addMapping("/localhost:8080")
                .allowedMethods("/user/**")
                .allowedOrigins("/")
                .allowedHeaders("token")
                .allowCredentials(true);
    }
Swagger 接口文档 的配置

在pom中导入依赖


        <!--swagger 文档接口支持-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.0</version>
        </dependency>

具体配置

@Configuration
@EnableSwagger2
public class SwaggerConfig {


    /**
     * 链式编程 来定制API样式 后续会加上分组信息
     */
    @Bean
    public Docket createSwagger() {
        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("ContentType:Application");
                         //文档类型
        return new Docket(DocumentationType.SWAGGER_2)
        //自定义展示的信息)
        .apiInfo(MyApiInfo())
        // 启动api选择的生成器
         .select().
        //扫描com路径下的api文档
         .apis(RequestHandlerSelectors.basePackage("com"))
         .build();

    }
 // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
    private ApiInfo MyApiInfo() {
     
        return new ApiInfoBuilder()
        //设置标题
        .title("swagger 测试文档 ")
        //接口描述
        .description("springboot Rest风格 接口测试")
        //设置开发人员一些信息
                .contact(new Contact("作者:hzy", "http//8080", "联系:                   1372265573@qq.com"))
                //设置版本
                .version("1.1").build();
    }

}
        
常用注解和
@Api(tags("改接口描述"))  标注 该类是swagger 文档接口 类
@ApiImplicitParams  加 ·s· 可以在里面的花括号写多个  @ApiImplicitParam 用逗号分隔
@ApiModel  标注实体类  在swagger中的那个实体 
......... 具体自己去看看
------------------------------------
@Controller
@Api(tags = "Usr 接口 ------")
public class indexController {

    // @RequestMapping(value = "/login",method = RequestMethod.GET)
    @PostMapping("/login")
    @ResponseBody
    @ApiImplicitParams({
            @ApiImplicitParam(name = "username", value = "用戶名稱", dataType = "String"),
            @ApiImplicitParam(name = "password", value = "密碼", dataType = "String")
    })
    public Map<String, String> login(String username, String password) {

        Map<String, String> loginMap = new HashMap<>();
        loginMap.put("用户名", username);
        loginMap.put("密码", password);
        loginMap.put("code", "200");
        loginMap.put("STATUS", "登录成功");
        return loginMap;
    }
springboot yml 基本配置
#服務其配置
server:
  port: 9000

    #servlet:
  # context-path: /book

#数据库相关配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/spring_bookssys?characterEncoding=utf8&amp&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT&useSSL=false

    # 数据源配置
    druid:
      # druid连接池监控
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin
        # 初始化时建立物理连接的个数
        initial-size: 5
        # 最大连接池数量
        max-active: 30
        # 最小连接池数量
        min-idle: 5
        # 获取连接时最大等待时间,单位毫秒
        max-wait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        time-between-eviction-runs-millis: 60000
        # 连接保持空闲而不被驱逐的最小时间
        min-evictable-idle-time-millis: 300000
        # 用来检测连接是否有效的sql,要求是一个查询语句
        validation-query: select count(*) from dual
        # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
        test-while-idle: true
        # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
        test-on-borrow: false
        # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
        test-on-return: false
        # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
        pool-prepared-statements: false
        # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
        max-pool-prepared-statement-per-connection-size: 50
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
        filters: stat,wall
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connection-properties:
          druid.stat.mergeSql: true
          druid.stat.slowSqlMillis: 500
        # 合并多个DruidDataSource的监控数据
        use-global-data-source-stat: true
        filter:
          stat:
            log-slow-sql: true
            slow-sql-millis: 1000
            merge-sql: true
          wall:
            config:
              multi-statement-allow: true


  #解析resources /静态资源
mvc:
  static-path-pattern: /**


#mybatis -plus 配置
#xml 扫描,多个目录用逗号或者分隔号(告Mapper所对应的xml 文件位置)
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true
    auto-mapping-behavior: full
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath*:mapper/**/*Mapper.xml

configuration:
  # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
  map-underscore-to-camel-case: true
  # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
  call-setters-on-nulls: true
  # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


debug: true


pom有关

 <!--阿里的数据库连接池支持-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        
        
检验Validation 对实体类的一些字段做检验
    pom中依赖的导入
    
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

使用測試:


      // 所有都验证
    @NotNull(message = "不能为空")
    private Integer id;

    // First 才验证
    @NotBlank(message = "字符串类型不能为空字符串(去除后面的空格后)")
    @NotNull(message = "对象不能为NULL", groups = {First.class})
     @Size(message = "字符串长度为[5-16]", min = 5, max = 16, groups = {Second.class})
    @Pattern(regexp = "[a-zA-z]*",message = "正则校验")
    private String username;

    // First 或 Second 才验证
    @NotBlank(message = "字符串类型不能为空字符串(去除后面的空格后)")
    @NotNull(message = "对象不能为NULL", groups = {First.class, Second.class})
    private String password;

    @NotNull(message = "对象不能为NULL", groups = {First.class})
    private Integer age;

    @NotEmpty(message = "字符串数组集合等不能为空,长度不能为零")
    @NotBlank(message = "字符串类型不能为空字符串(去除空格后)")
    @NotNull(message = "用户名不能为空")

在控制层使用注解 @Validated 来标注
    @PostMapping("/validated")
    public Teacher validated(@RequestBody @Validated Teacher teacher) {
        return teacher;
    }


Spring Aop切面
pom的导入
  <!--spring -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
    

測試: 首先@Aspect 标注从哪儿去切 定义切面

@Aspect
@Component

//切面
public class AspectTest {
    //切点
    @Pointcut("execution(* spring.springboot.aspect.AspectTestConfig.*(..))")
    public void pointcut() {
    }

    @Before("pointcut()")
    public void before() {
        System.out.println("before :  前");
    }

    @After("pointcut()")
    public void after() {
        System.out.println("after :   后");
    }

    @AfterReturning("pointcut()")
    public void afterReturning() {
        System.out.println("afterReturning : 在最后一句代码结束的时候");
    }

    @AfterThrowing("pointcut()")
    public void afterThrowing() {
        System.out.println("afterThrowing : 有异常出现的时候");
    }

    @Around("pointcut()")
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("环绕前");
        proceedingJoinPoint.proceed();
        System.out.println("环绕后");
    }

}

和上面定义的异常来测试用

@Component
public class AspectTestConfig {

    public String aspectTest() throws MyGlobalException {

        System.out.println("A  Is Aspect-----");
        String t = null;
        if (t == null) {
            throw new MyGlobalException("aop测试异常");
        }
        return "return 值";
    }
}

定义控制层controller来测试


@RestController
@Api(tags = "aspect 切面测试")
public class AspectController {
    @Autowired
    AspectTestConfig aspectTestConfig;
    @ApiImplicitParam(value = "ONLY TEST  ", name = "AOP----的切面测试------")
    @GetMapping("/aspect")
    public String aspectController() throws MyGlobalException {

        return aspectTestConfig.aspectTest();
    }

}
Spring Boot 配置属性类型安全,你都了解了吗? SpringBoot提供了基础设施来绑定@ConfigurationProperties类型并将它们注册为bean。可以逐个类地启用配置属性,也可以启用与组件扫描方式类似的配置属性扫描。环境准备环境。 阅读详情

相关推荐

springboot几个常用配置类

目录 1.编写目的 2.几个常用的配置类 解决跨域问题的配置类CorsConfig.java 有关mybatis自动生成的配置文件generatorConfig.xml 配置阿里巴巴数据库连接池 1.编写目的 本博客主要是对这两个月的学习springboot的记录,对学习内容的梳理,同时加强自己的记忆 2.几个常用的配置类 解决跨域问题的配置类CorsConfig.java ...

忧郁的风OvO的博客 1025

SpringBoot的配置类

配置类用于向容器中注入组件,几乎每个配置类都绑定着一个或多个配置属性类,而配置属性类绑定着一个配置文件。 一、配置类注入Bean的方式 1.@Bean @Configuration public class DogConfiguration { @Bean public Dog dog() { Dog dog = new Dog(); dog.setName("小黑"); dog.setType("柯基"); return do

weixin_46134317的博客 3769

jackson学习之十(终篇):springboot整合(配置类)

1、看视频进行系统学习这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。2、读源码,看实战笔记,学习大神思路“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。

2401_84415652的博客 975

springboot自己常用的配置类

springboot自己常用的配置类fastjson配置MybatisPlus分页配置跨域配置异常处理器 fastjson配置 import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.ToStringSerializer; import com.alibaba.

antRain的博客 619

大数据面试 逻辑题

逻辑题大致分为比较逻辑题、分析逻辑题、综合逻辑题、抽象逻辑题、概括逻辑题、推理逻辑题、论证逻辑题等,由于这类题比较考验综合素质,因此也一直是各大企业笔试、面试时经常喜欢考察的题目类型之一。很多童鞋认为逻辑题很难,其实不然。多做练习,打开思路,这类题还是可以轻易化解的。 下面为大家整理了网络上最全的75道逻辑判断测试题。在每道题目下方有答案,是用白色显示的,反选就可以看到啦~ 【1】假设有一个池...

zzq_0916s的博客 4421

Windows下OpenMBEE项目MMS部署失败经历及改正

在Github里找到了上面的第一份文档,下载了MMS源代码(不知道为什么这个代码跟上面操作克隆得到的MMS代码不一样?好像是因为Gradle的版本问题,我本地之前已经安装过7.6.4的Gradle了,于是我找到gradle-wrapper.properties文件。后面在VScode中运行了一下依然是报这个错误,我在VScode终端直接执行。不知道为什么依然没什么用。打开“Windows PowerShell”。(如果是第一次运行它,将看到更长的输出)导航到要克隆存储库的文件夹,例如,

Yo_lan_da的博客 1868

Springboot常用注解大全

springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据访问层bean@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写@Autowired:按类型注入.默认属性required= true;当不能确定 Sprin...

yitian_66的博客 7万+

Unity跨平台存储避坑指南:persistentDataPath权限真相

Application.persistentDataPath是Unity中用于持久化数据的核心路径,表面提供跨平台抽象,实则底层访问机制因操作系统而异。其原理并非简单路径映射,而是受Android Scoped Storage、iOS Data Protection、Windows组策略及macOS隐私权限等多层安全模型动态约束。技术价值在于保障用户数据长期可靠存储,但若忽略平台差异,极易引发‘本地正常、真机崩溃’‘iOS可存、Android报错’等线上事故。典型应用场景包括游戏存档、离线缓存、自定义资源包

weixin_32073537的博客 350

SpringBoot 配置类 @Configuration和@Bean的使用

基本介绍 Spring Boot推荐使用java配置完全代替XML配置,java配置是通过@Configration和@Bean注解实现的。二者作用如下: @Configration 注解:声明当前类是一个配置类,相当于Spring中的一个XML文件 @Bean 注解:作用在方法上,声明当前方法的返回值是一个Bean 配置类的加载 spring容器在启动的时候会去扫描@Configuration,并将相关的类进行加载。 它将在resources目录下的META-INF...

flyconley的博客 1万+

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

游戏服务器框架之跨服(一)

如今的游戏开发,不搞个跨服玩法都不好意思说在做游戏了(当然,也跟游戏类型有关,一些轻度休闲游戏可以排除在外)。跨服玩法的设计,可以进一步激发玩家追求高战力的虚荣心,也可以汇聚玩家数量,避免单服日活跃低呈现死服现象。 几种常见的跨服玩法拓扑结构 一,不同游戏服的玩家进入中立服务器进行战斗,例如跨服天梯类玩法。 游戏服有很多个节点,中心服务器也有很多节点。只要保证对战的双方同时进入同一个中心服游戏进程即可。 二,若干个游戏服组成一个社区,全部服务器包含多个社区,例如世界服玩法。 三,游戏服A玩

littleschemer的博客 5771

13、SpringBoot之配置类@Configuration

01、概述 配置类:在springboot中被@Configuration或者@SpringBootConfiguration标注的类称之为配置类。 02、作用&目的 在配置类可以定义很多@Bean的方法,可以让这些@Bean修饰的方式让spring框架加载到ioc容器中去。 03、那为什么会存在配置 方便你覆盖底层的配置类 让你去扩展的bean的一种机制。 04、一个springboot项目中的加载的bean有那些呢? 程序员自己编写的开发的bean ,比如加了:@Service,@Map

qq_41978323的博客 1万+

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2535

springboot中的配置类Configuration

使用。

2301_80011650的博客 5017

3.1 快速启动Flink集群

在本实战中,我们将快速启动Apache Flink 1.13.0集群,并在Hadoop集群环境中提交作业。首先,我们会在本地下载Flink安装包并上传至云主机,解压并配置环境变量。接着,我们将启动Flink集群,通过访问Web UI进行监控管理。然后,我们会配置集群,将Flink分发到从节点,并在集群上提交作业。最后,我们将通过命令行提交作业,并在Web UI上查看任务节点的输出结果。这个过程涵盖了Flink集群的部署、配置和作业提交,为大数据处理提供了一个完整的实战经验。

howard2005的专栏 727

【网络安全】浅谈数据库攻击复现及相关安全优化

4、准备数据库服务器为了安全正式环境应该把数据库单独放一台服务器,只允许让应用服务器 IP 来访问数据库服务器,通过独立两者,就算其中一台发生问题,另一台也是好的,进一步降低了危险性。5、定时备份数据库开发定时备份功能,可以使用 Crontab,或者其他框架,设定周期备份数据,哪怕是数据丢失或被删除也可以快速恢复。

2401_88545587的博客 221

SpringBoot项目常用的配置类和常量

在开发 Spring Boot 项目时,为了提升开发效率、增加代码的可维护性和可扩展性,通常会使用一些常用的配置类和常量。

weixin_73144915的博客 1164

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SpringBoot中自定义配置类

SpringBoot中自定义配置类 1.方式一: 配置类标注: @ConfigurationProperties注解,可以设置前缀名 @Component 将该类放入spring容器中 必须设定get/set方法 配置类: @Component //将该Bean放入spring容器中 @ConfigurationProperties(prefix = "com.example")//指定该类为配置获取类,并指定前缀 public class MyConfig { private String

GuessHat的博客 5598

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot零配置,注解大全一:配置类相关注解

一、开篇语: 首先,我们知道SpringBoot由 Sping5演变而来,已经基本抛弃之前application.xml中包路径扫描,bean的IOC,DI以及import导入等等相关功能。 接下来,我们开始spring boot相关注解讲解,讲的好,各位老铁帮忙给个点赞: 二、注解详讲: 注解按照功能划分,大致可以分为配置类的注解,注入类的...

撸起袖子加油干 919

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【springboot】springboot 注解之配置类添加组件

需要写一个 xml 文件,文件里面配置好 bean 标签。使用注解的方式。而 springboot 沿用了 spring 注解的方式添加 bean。接下来我们了解下springboot如何在 IOC 中添加一个对象。@Configuration 注解可以将配置类以 bean 的形式添加到 IOC 中@Bean 注解添加需要普通的对象,@Bean 只能用在 @Configuration 的方法上。

zzd13546036394的博客 1287

SpringBoot 配置类解析

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA 作者:Shi Zhengxing SpringBoot作为Java领域非常流行的开源框架,集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用,大部分的 Spring Boot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。SpringBoot上手快,但是如果你的项目中业务场景需要一些特殊定制.

vivo互联网技术 919

SpringBoot控制配置类加载顺序

1、@Configuration配置被加载进容器的方式大体上可分为3种 手动:构建ApplicationContext时由构建者手动传入,可手动控制顺序。 自动1:被@ComponentScan自动扫描进去,无法控制顺序。 自动2:自动扫描,运用SpringBoot的3大注解,可以控制顺序。 2、控制配置类加载顺序 2.1、传统的 Spring Framework 控制配置类加载顺序 在传统的 Spring Framework 里,一个 @Configuration 注解标注的类就代表一个配置类,当存在多

zengjyxxz的博客 1万+

SpringBoot实现配置类详解

Spring Boot提供了自动配置机制,大多数情况下无需手动配置。然而,当需要自定义配置时,可以通过创建配置类来实现。定义配置类配置类通常使用注解标识,类中定义的方法会被Spring容器识别为Bean的创建方法。配置Bean使用@Bean注解定义Bean,并将其注册到Spring容器中。配置类是Spring Boot中非常重要的一部分,它允许开发者以编程的方式定义和管理应用的配置。通过合理使用配置类,可以实现对Spring Boot应用的精确控制,提高代码的灵活性和可维护性。

jewank的博客 1203

SpringBoot常用注解大全

SpringBoot常用注解大全@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。@RequestMapping注解对请求处理类中的请求处理方法进行标注。@RequestMapping注解拥有以下的六个配置属性:...

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1392

SpringBoot配置类中的@Configuration注解和@bean注解

1.@Configuration注解 用法:作用在类上面 作用:告诉SpringBoot这是一个配置类,相当于Spring中的xml配置文件。 @Configuration //告诉SpringBoot这是一个配置类 == 配置文件 public class Config { } 2.@bean注解 用法:配置类里面使用@Bean标注在方法上给IoC容器注册组件,默认也是单实例的 作用:给容器中添加组件,相当于Spring中xml配置文件中的<bean>标签。 理解:以方法名作为组件的id。返

MrYushiwen的博客 7883
上一篇: Servlet总结
下一篇: redis 操作5中数据类型
gudfdd
博客等级 码龄8年 1粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值