zoukankan      html  css  js  c++  java
  • springBoot 配置详解

    一、服务器配置:

      1.端口 server.port=8090

      2.上下文 server.servlet.context-path=/config

      3.绑定服务器IP地址 server.address=127.1.1.1

      4.会话过期时间 server.session.timeout=30000

    二、Tomcat服务器配置:

      1.打开Tomcat 访问日志 server.tomcat.accesslog.enabled=true

      2.访问日志所在的目录 server.tomcat.accesslog.directory=logs

      3.允许HTTP请求缓存到请求列队的最大个数,默认不限制 server.tomcat.accept-count=

      4.最大连接数,默认不限制,如果一旦连接数到达,剩下的连接将会保存到请求缓存列队里,也就是accept-count指定列队 server.tomcat.max-connections=

      5.最大工作线程数 server.tomcat.max-threads=

      6.HTTP POST 内容最大长度,默认不限制 server.tomcat.max-http-post-size

    三、配置启动信息:

      1.配置springBoot欢迎页,在resources目录下新建一个banner.txt、banner.gif(png,jpg)。

         banner.charset=UTF-8 # banner.txt

       banner.location=classpath:banner.txt

       banner.image.location=classpath:banner.gif

       banner.image.width=76

       banner.image.height=76

       banner.image.margin=2

    四、(logBack)日志配置:

      1.设定日志级别 logging.level.root=info(默认级别) logging.level.org=warn(包名是 org 开头的类)

      2.指定日志输出文件 logging.file=my.log

      3.指定日志存放路径 logging.path=e:/temp/log

    五、读取引用配置:

      1.Environment 是一个通用的读取应用程序运行时的环境变量的接口,可以读取application.properties、命令行输入参数、系统属性、操作系统环境变量等。

     8 public class EnvConfig {
     9 
    10     /* AbstractEnvironment 实现类*/
    11     @Autowired
    12     private Environment environment;
    13 
    14     public int getServerPort(){
    15         return environment.getProperty("server.port",Integer.class);
    16     }
    17 
    18 
    19 }

      2.@Value 直接通过注解的方式配置信息到spring管理的Bean中。注意该注解不能在任何Bean中使用, 因为@Value本身是通过 AutowiredAnnotationBeanPostProcessor 实现的,

      凡是 BeanPostProcessor 和 BeanFactoryPostProcessor 的子类都不能使用@Value来注入属性。

    1    @RequestMapping("/getPortValue")
    2     public String portValue(@Value("${server.port}") String port){
    3         return port;
    4     }

      3.@ConfigurationProperties 配置类注解,要使用该注解需要在springBoot启动类添加注解 @EnableConfigurationProperties(value = {ServerConfig.class}) ,之后就可以使用@Autowired引用

     6 @ConfigurationProperties(prefix = "server")
     7 @Configuration
     8 public class ServerConfig {
     9     private String port;
    10 
    11     public String getPort() {
    12         return port;
    13     }
    14 
    15     public void setPort(String port) {
    16         this.port = port;
    17     }
    18 }
    15 @RestController
    16 @SpringBootApplication
    17 @EnableConfigurationProperties(value = ServerConfig.class)
    18 public class SpringbootHelloApplication {
    19 
    20     @Autowired
    21     private EnvConfig envConfig;
    22 
    23     @Autowired
    24     private ServerConfig serverConfig;
    25 
    26     public static void main(String[] args) {
    27         SpringApplication.run(SpringbootHelloApplication.class, args);
    28     }
    29 }

    六、springBoot自动装配:

      1.spring 提供了注解@Configuration@Bean 自动装配

    10 @Configuration
    11 public class MyConfiguration {
    12 
    13     @Bean("testBean")
    14     public TestBean getTestBean(){
    15         return new TestBean();
    16     }
    17   
    18     @Bean
    19     public MyService getMyService(DataSource dataSource){
    20         return new MyService(dataSource);
    21     }
    22 }

      2.Bean条件装配,可以通过有无指定Bean来决定是否配置Bean,使用@ConditionalOnBean,在当前上下文中存在某个对象时,才会实例化一个Bean对象;

      使用@ConditionalOnMissingBean,在当前上下文中不存在某个对象时,才会实例化一个Bean。

      3.class条件装配是按照某个类是否在Classpath中来决定是否要配置Bean。@ConditionalOnClass,表示当classpath 有指定的类时,配置生效;@ConditionalOnMissingClass则反之。

      4.Environment 装配,根据Environment 属性来决定配置是否生效:

     5 /*
     6  * @ConditionalOnProperty 
     7  * 根据 name 来读取SpringBoot 的Environment 的变量包含的属性,
     8  * 根据 havingValue 的值比较结果来决定配置是否生效。
     9  * matchIfMissing 为 true 意味着如果 Environment 没有包含"server.port" ,配置也能生效,默认值为false 
    10  */
    11 @ConditionalOnProperty(name = "server.port", havingValue = "8090", matchIfMissing = true)
    12 public class EnvironmentDemo {
    13 }

      5.其他条件配置:@ConditionalOnExpression,当表达式为true时,才会实例化一个Bean;@ConditionalOnJava,当存在指定的Java版本的时候生效。

     1 /*
     2   支持SpEL表达式  
     3 */
     4 @Configuration
     5 @ConditionalOnExpression("${enabled:false}")
     6 public class ConditionalOnExpressionDemo{
     7     @Bean
     8     public MessageMonitor getMessageMonitor(ConfigContext configContext) {
     9         return new MessageMonitor(configContext);
    10     }
    11 }
    4 @ConditionalOnJava(range = ConditionalOnJava.Range.EQUAL_OR_NEWER,value = JavaVersion.EIGHT)
    5 public class ConditionalOnJavaDemo {
    6 }

       6.联合多个条件自动装配:

     1 /*
     2  @Configuration 表明这是一个配置类
     3  @AutoConfigureAfter 表明需要在 RedisAutoConfiguration 配置类之后再生效
     4  @Conditional 是一个更为通用的条件类,可以实现 Condition 接口,重写matches方法 自定义条件
     5 */
     6 @Configuration
     7 @AutoConfigureAfter(RedisAutoConfiguration.class)
     8 @ConditionalOnBean(RedisTemplate.class)
     9 @ConditionalOnMissingBean(CacheManager.class)
    10 @Conditional(CacheCondition.class)
    11 public class RedisCacheConfiguration {}

      7.实现Condition 接口重写matches,ConditionContext类可以获取多个辅助类。 

     1 @Configuration
     2 public class ConditionDemo {
     3     @Bean
     4     @Conditional(EncryptCodition.class)
     5     public TestBean getTestBean(){
     6         return new TestBean();
     7     }
     8 
     9     static class EncryptCodition implements Condition{
    10         @Override
    11         public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
    12             Resource res = conditionContext.getResourceLoader().getResource("condition.txt");
    13             Environment env = conditionContext.getEnvironment();
    14             ConfigurableListableBeanFactory configurableListableBeanFactory =  conditionContext.getBeanFactory();
    15             return res.exists() && env.containsProperty("encrypt.enable");
    16         }
    17     }
    18 }

       

      

  • 相关阅读:
    面试问题整理Andorid版本 date: 2017-1-12 21:14:36 categories: 技术
    轻量级的C++插件框架
    C++程序在Windows平台上各种定位内存泄漏的方法,并对比了它们的优缺点
    Facebook App 的头文件会有更多的收获
    合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友_python
    使用python在校内发人人网状态(人人网看状态)_python
    使用PYTHON创建XML文档_python
    优秀的缓存请求库,快速请求接口和图片:WTRequestCenter
    让读者快速了解RocketMQ消息中间件需要解决哪些问题
    编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤
  • 原文地址:https://www.cnblogs.com/haiyangwu/p/10255315.html
Copyright © 2011-2022 走看看