1. 03 Nov, 2014 3 commits
    • Stephane Nicoll's avatar
      Generate standard configuration meta-data · fbf8f56a
      Stephane Nicoll authored
      Update the `spring-boot`, `spring-boot-autoconfigure` and
      `spring-boot-actuator` project to generate configuration meta-data
      files during compilation.
      
      See gh-1001
      fbf8f56a
    • Phillip Webb's avatar
      Add a defaultValue attribute to config meta-data · c73adcd1
      Phillip Webb authored
      Update `ConfigurationMetadataAnnotationProcessor` to include the
      'defaultValue' of a property when possible. For example the
      'defaultValue' or 'server.port' is '8080'.
      
      Default values are detected by inspecting the field assignments of
      @ConfigurationProperties items. In order to detect field values some
      internals of the Java compiler are used. To save a dependency on
      'tools.jar' internal javac classes are accessed using reflection.
      
      See gh-1001
      c73adcd1
    • Stephane Nicoll's avatar
      Add processor to generate configuration meta-data · 884c058e
      Stephane Nicoll authored
      Adds an annotation processor to generates a JSON meta-data file at
      compile time from @ConfigurationProperties items. Each meta-data file
      can include an array or 'properties' and 'groups'.
      
      A 'property' is a single item that may appear in a Spring Boot
      'application.properties' file with a given value. For example,
      'server.port' and 'server.context-path' are properties. Each property
      may optionally include 'type' and 'description' attributes to provide
      the data type (e.g. `java.lang.Integer`, `java.lang.String`) and
      some short documentation (taken from the field javadoc) about what the
      property is for. For consistency, the type of a primitive is translated
      to its wrapper counterpart, i.e. `boolean` becomes `java.lang.Boolean`.
      
      A 'group' provides a higher level grouping of properties. For example
      the 'server.port' and 'server.context-path' properties are in the
      'server' group.
      
      Both 'property' and 'group' items may additional have 'sourceType' and
      'sourceMethod' attributes to indicate the source that contributed them.
      
      Users may use `META-INF/additional-spring-configuration-metadata.json`
      to manually provide additionally meta-data that is not covered by
      @ConfigurationProperties objects. The contents of this file will be
      read and merged with harvested items. The complete meta-data file is
      finally written to `META-INF/spring-configuration-metadata.json`.
      
      See gh-1001
      884c058e
  2. 02 Nov, 2014 5 commits
    • Phillip Webb's avatar
      Improve OnBeanCondition Performance · 45b579c4
      Phillip Webb authored
      Update OnBeanCondition to use a new BeanTypeRegistry which includes
      optimized code when using a DefaultListableBeanFactory. The optimized
      version calculates bean types only once per bean and caches the result.
      
      Prior to this change the sample "pet clinic" application would spend
      400-500 milliseconds evaluating OnBeanConditions, after this change it
      spends around 120 milliseconds.
      
      Fixes gh-1803
      45b579c4
    • Phillip Webb's avatar
      Merge branch '1.1.x' · d6f2f0de
      Phillip Webb authored
      d6f2f0de
    • Phillip Webb's avatar
      Use more specific WebSecurityConfigurer @Bean type · 5f80f355
      Phillip Webb authored
      Update ManagementSecurityAutoConfiguration to return
      IgnoredPathsWebSecurityConfigurerAdapter rather than
      WebSecurityConfigurer<WebSecurity>.
      5f80f355
    • Phillip Webb's avatar
      Merge remote-tracking branch 'springsource/1.1.x' · a490aef8
      Phillip Webb authored
      Conflicts:
      	spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java
      a490aef8
    • Phillip Webb's avatar
      Polish · 8ba71c88
      Phillip Webb authored
      8ba71c88
  3. 01 Nov, 2014 6 commits
  4. 31 Oct, 2014 4 commits
    • Dave Syer's avatar
      Switch to Dropwizard metrics 3.1.0 · 49fbf215
      Dave Syer authored
      Fixes gh-1775
      49fbf215
    • Dave Syer's avatar
      Add missing method for Java 1.7 · afb71568
      Dave Syer authored
      afb71568
    • Dave Syer's avatar
      Add Codahale metrics to /metrics endpoint · a284d7bd
      Dave Syer authored
      All metrics in the MetricRegistry have been added unconditionally for now.
      
      Fixes gh-1795
      a284d7bd
    • Stephane Nicoll's avatar
      Add init command to the CLI · b2fe2dd9
      Stephane Nicoll authored
      This commit adds a new command to the CLI that allows to initialize a new
      project from the command line. It uses the Spring initializr service to
      actually generate the project.
      
      The command offers two main operations:
      
      1. Listing the capabilities of the service (--list or -l). This basically
      dumps the defaults of a given service and the list of dependencies and
      project types it supports
      2. Generating a project. By default, http://start.spring.io is used and
      its configured defaults are applied. Running spring init would therefore
      have the same effect as clicking the 'generate project' on the UI without
      entering any extra information. No file is overwritten by default.
      
      The generation can be customized with the following options:
      
      * --boot-version (-bv) Spring Boot version the project should use
      * --dependencies (-d) comma separated list of dependencies to add to the
      generated project
      * --java-version (-jv) Java version to use
      * --packaging (-p) the packaging for the project (jar, war)
      * --target the url of the service to use
      
      The actual type of the project can be defined in several ways:
      
      1. Using the --type (-t) option that identifies a type that is supported
      by the service
      2. A combination of --build and/or --format that can be used to uniquely
      identify matching these tags. Build represents the build system to use
      (e.g. maven or gradle) while --format defines the format of the generated
      project.
      
      The project is saved on disk with the name provided by the server through
      the Content-Disposition header, if any. It is possible to force it with
      the --output option. It is possible to overwrite existing files by adding
      the --force (-f) flag.
      
      The --extract (-x) option allows to extract the project instead of saving
      the zip archive. By default, the project is extracted in the current
      working directory but it is possible to specify an alternate directory
      using the --output option.
      
      Fixes gh-1751
      b2fe2dd9
  5. 30 Oct, 2014 6 commits
    • Phillip Webb's avatar
      Upgrade to Spring 4.1.2.BUILD-SNAPSHOT · 4b45ce9e
      Phillip Webb authored
      4b45ce9e
    • Phillip Webb's avatar
      Programmatically configure logback defaults · 931add4a
      Phillip Webb authored
      Update LogbackLoggingSystem to programmatically configure logback
      defaults rather than parsing XML. This change shaves about 100ms off
      the start up time.
      
      Fixes gh-1796
      931add4a
    • Andy Wilkinson's avatar
      Merge branch '1.1.x' · 36ffad2b
      Andy Wilkinson authored
      36ffad2b
    • Andy Wilkinson's avatar
      Make GroovyWebConfiguration conditional on spring-webmvc's availability · 0f171423
      Andy Wilkinson authored
      GroovyWebConfiguration creates a GroovyTemplateViewResolver which is
      a UrlBasedViewResolver sub-class. UrlBasedViewResolver is provided
      by spring-webmvc. Previously, if a user configured a web application
      but did not have spring-webmvc on the classpath, the application
      would fail to start with a NoClassDefFoundError for
      UrlBasedViewResolver.
      
      This commit makes GroovyWebConfiguration conditional on
      UrlBasedViewResolver being on the classpath so that it backs of in
      the absence of spring-webmvc.
      
      Fixes gh-1793
      0f171423
    • Andy Wilkinson's avatar
      Make Spring Security's filter's order configurable and default to zero · 0cdb1d3f
      Andy Wilkinson authored
      Previously, Spring Security's filter had no configured order. Due to
      the use of AnnotationAwareOrderComparater this meant that its order
      defaulted to LOWEST_PRECEDENCE. This meant that a user had to declare
      a FilterRegistrationBean for the filter and explicitly set its order
      if they want another filter to run after Spring Security's.
      
      This commit updates the security auto-configuration to assign a
      default order of zero to Spring Security's filter, allowing filters
      to be easily configured to run before it or after it. This default
      value can overridden using the server.filter-order property. The
      default order is also exposed as a constant on SecurityProperties,
      allowing it to be referenced from other filter declarations.
      
      Closes gh-1640
      0cdb1d3f
    • Phillip Webb's avatar
      Rework logging to prevent double initialization · cf24af0b
      Phillip Webb authored
      Prior to this commit LoggingSystem initialization would happen multiple
      times. Once to configure "quiet" logging, and again to configure correct
      settings once the Application was initialized. This could cause problems
      if `logging.groovy` logback files were used.
      
      The logging system is now only initialized once (when possible) by
      following these steps:
      
      - Standard logging initialization occurs via the actual logging
        implementation used (e.g. logback will load a logback.xml file if it
        exists)
      - beforeInitization() is called to prevent early log output.
        Implementations now either use a Filter or simply set the root logging
        level.
      - initialize() is called with an optional log configuration file (e.g
        a custom logback.xml location) and an optional log output file (the
        default is null indicating console only output).
      
      The initialize() method will attempt to prevent double initialization
      by checking if a standard configuration file exists. Double
      initialization now only occurs in the following situations:
      
      - The user has a standard configuration file (e.g. classpath:logback.xml)
        but also specifies a logging.config property. Double initialization is
        required since the specified configuration file supersedes the default.
      - The user has a standard configuration file (e.g. classpath:logback.xml)
        and specifies a logging.file property. Double initialization is
        required since the standard configuration may use a ${LOG_FILE}
        reference.
      
      In addition this commit removes the `logging.console` option and now
      assumes that logging either occurs only to console or to both the
      console and a file. This restriction helps simplify the LoggingSystem
      implementations. If file only logging is required a custom logback.xml
      can be used.
      
      Fixes gh-1091
      See gh-1612, gh-1770
      cf24af0b
  6. 29 Oct, 2014 12 commits
  7. 28 Oct, 2014 4 commits