• 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 }

       

      

  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/haiyangwu/p/10255315.html
Copyright © 2020-2023  润新知