Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
3dacf4be
Commit
3dacf4be
authored
Jan 07, 2014
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate Logging and Liquibase initializers to be listeners
parent
27ae6a5f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
175 additions
and
66 deletions
+175
-66
ManagementSecurityAutoConfigurationTests.java
...toconfigure/ManagementSecurityAutoConfigurationTests.java
+2
-2
DefaultErrorViewIntegrationTests.java
...rk/boot/actuate/web/DefaultErrorViewIntegrationTests.java
+2
-2
SecurityAutoConfigurationTests.java
...utoconfigure/security/SecurityAutoConfigurationTests.java
+2
-2
SpringApplication.java
...main/java/org/springframework/boot/SpringApplication.java
+8
-3
SpringApplicationBeforeRefreshEvent.java
...ngframework/boot/SpringApplicationBeforeRefreshEvent.java
+69
-0
SpringApplicationEnvironmentAvailableEvent.java
...work/boot/SpringApplicationEnvironmentAvailableEvent.java
+5
-4
ConfigFileApplicationContextInitializer.java
.../initializer/ConfigFileApplicationContextInitializer.java
+3
-3
LoggingApplicationListener.java
...ork/boot/context/listener/LoggingApplicationListener.java
+47
-19
LiquibaseServiceLocatorInitializer.java
...rk/boot/liquibase/LiquibaseServiceLocatorInitializer.java
+0
-7
spring.factories
spring-boot/src/main/resources/META-INF/spring.factories
+5
-2
SpringApplicationBuilderTests.java
...framework/boot/builder/SpringApplicationBuilderTests.java
+3
-3
ConfigFileApplicationContextInitializerTests.java
...ializer/ConfigFileApplicationContextInitializerTests.java
+2
-2
LoggingApplicationListenerTests.java
...oot/context/listener/LoggingApplicationListenerTests.java
+27
-17
No files found.
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/ManagementSecurityAutoConfigurationTests.java
View file @
3dacf4be
...
@@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurationReportLoggingInit
...
@@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurationReportLoggingInit
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration
;
import
org.springframework.boot.context.
initializer.LoggingApplicationContextInitializ
er
;
import
org.springframework.boot.context.
listener.LoggingApplicationListen
er
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.event.ContextRefreshedEvent
;
import
org.springframework.context.event.ContextRefreshedEvent
;
...
@@ -170,7 +170,7 @@ public class ManagementSecurityAutoConfigurationTests {
...
@@ -170,7 +170,7 @@ public class ManagementSecurityAutoConfigurationTests {
private
static
AnnotationConfigWebApplicationContext
debugRefresh
(
private
static
AnnotationConfigWebApplicationContext
debugRefresh
(
AnnotationConfigWebApplicationContext
context
)
{
AnnotationConfigWebApplicationContext
context
)
{
TestUtils
.
addEnviroment
(
context
,
"debug:true"
);
TestUtils
.
addEnviroment
(
context
,
"debug:true"
);
LoggingApplication
ContextInitializer
logging
=
new
LoggingApplicationContextInitializ
er
();
LoggingApplication
Listener
logging
=
new
LoggingApplicationListen
er
();
logging
.
initialize
(
context
);
logging
.
initialize
(
context
);
AutoConfigurationReportLoggingInitializer
initializer
=
new
AutoConfigurationReportLoggingInitializer
();
AutoConfigurationReportLoggingInitializer
initializer
=
new
AutoConfigurationReportLoggingInitializer
();
initializer
.
initialize
(
context
);
initializer
.
initialize
(
context
);
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/web/DefaultErrorViewIntegrationTests.java
View file @
3dacf4be
...
@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.actuate.web.DefaultErrorViewIntegrationTests.TestConfiguration
;
import
org.springframework.boot.actuate.web.DefaultErrorViewIntegrationTests.TestConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.context.
initializer.LoggingApplicationContextInitializ
er
;
import
org.springframework.boot.context.
listener.LoggingApplicationListen
er
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.ContextConfiguration
;
...
@@ -41,7 +41,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
...
@@ -41,7 +41,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
/**
/**
* @author Dave Syer
* @author Dave Syer
*/
*/
@ContextConfiguration
(
classes
=
TestConfiguration
.
class
,
initializers
=
{
LoggingApplication
ContextInitializ
er
.
class
})
@ContextConfiguration
(
classes
=
TestConfiguration
.
class
,
initializers
=
{
LoggingApplication
Listen
er
.
class
})
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@WebAppConfiguration
@WebAppConfiguration
public
class
DefaultErrorViewIntegrationTests
{
public
class
DefaultErrorViewIntegrationTests
{
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java
View file @
3dacf4be
...
@@ -24,7 +24,7 @@ import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfigurati
...
@@ -24,7 +24,7 @@ import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfigurati
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
;
import
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
;
import
org.springframework.boot.autoconfigure.orm.jpa.test.City
;
import
org.springframework.boot.autoconfigure.orm.jpa.test.City
;
import
org.springframework.boot.context.
initializer.LoggingApplicationContextInitializ
er
;
import
org.springframework.boot.context.
listener.LoggingApplicationListen
er
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -117,7 +117,7 @@ public class SecurityAutoConfigurationTests {
...
@@ -117,7 +117,7 @@ public class SecurityAutoConfigurationTests {
private
static
AnnotationConfigWebApplicationContext
debugRefresh
(
private
static
AnnotationConfigWebApplicationContext
debugRefresh
(
AnnotationConfigWebApplicationContext
context
)
{
AnnotationConfigWebApplicationContext
context
)
{
TestUtils
.
addEnviroment
(
context
,
"debug:true"
);
TestUtils
.
addEnviroment
(
context
,
"debug:true"
);
LoggingApplication
ContextInitializer
logging
=
new
LoggingApplicationContextInitializ
er
();
LoggingApplication
Listener
logging
=
new
LoggingApplicationListen
er
();
logging
.
initialize
(
context
);
logging
.
initialize
(
context
);
AutoConfigurationReportLoggingInitializer
initializer
=
new
AutoConfigurationReportLoggingInitializer
();
AutoConfigurationReportLoggingInitializer
initializer
=
new
AutoConfigurationReportLoggingInitializer
();
initializer
.
initialize
(
context
);
initializer
.
initialize
(
context
);
...
...
spring-boot/src/main/java/org/springframework/boot/SpringApplication.java
View file @
3dacf4be
...
@@ -320,17 +320,19 @@ public class SpringApplication {
...
@@ -320,17 +320,19 @@ public class SpringApplication {
}
}
// Notify listeners of the environment creation
// Notify listeners of the environment creation
multicaster
.
multicastEvent
(
new
SpringApplication
NewEnvironmentEvent
(
this
,
multicaster
.
multicastEvent
(
new
SpringApplication
EnvironmentAvailableEvent
(
environment
,
args
));
this
,
environment
,
args
));
// Sources might have changed when environment was applied
// Sources might have changed when environment was applied
sources
=
getSources
();
sources
=
getSources
();
registerListeners
(
multicaster
,
sources
);
Assert
.
notEmpty
(
sources
,
"Sources must not be empty"
);
Assert
.
notEmpty
(
sources
,
"Sources must not be empty"
);
if
(
this
.
showBanner
)
{
if
(
this
.
showBanner
)
{
printBanner
();
printBanner
();
}
}
// Some sources might be listeners
registerListeners
(
multicaster
,
sources
);
// Create, load, refresh and run the ApplicationContext
// Create, load, refresh and run the ApplicationContext
context
=
createApplicationContext
();
context
=
createApplicationContext
();
registerApplicationEventMulticaster
(
context
,
multicaster
);
registerApplicationEventMulticaster
(
context
,
multicaster
);
...
@@ -343,6 +345,9 @@ public class SpringApplication {
...
@@ -343,6 +345,9 @@ public class SpringApplication {
}
}
load
(
context
,
sources
.
toArray
(
new
Object
[
sources
.
size
()]));
load
(
context
,
sources
.
toArray
(
new
Object
[
sources
.
size
()]));
// Notify listeners of intention to refresh
multicaster
.
multicastEvent
(
new
SpringApplicationBeforeRefreshEvent
(
this
,
context
,
args
));
refresh
(
context
);
refresh
(
context
);
stopWatch
.
stop
();
stopWatch
.
stop
();
...
...
spring-boot/src/main/java/org/springframework/boot/SpringApplicationBeforeRefreshEvent.java
0 → 100644
View file @
3dacf4be
/*
* Copyright 2012-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationEvent
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.core.env.Environment
;
/**
* Event published as when a {@link SpringApplication} is starting up and the
* {@link ApplicationContext} is about to refresh. The bean definitions will be loaded and
* the {@link Environment} is ready for use at this stage.
*
* @author Dave Syer
*/
public
class
SpringApplicationBeforeRefreshEvent
extends
ApplicationEvent
{
private
String
[]
args
;
private
ConfigurableApplicationContext
context
;
/**
* @param springApplication the current application
* @param context the ApplicationContext about to be refreshed
* @param args the argumemts the application is running with
*/
public
SpringApplicationBeforeRefreshEvent
(
SpringApplication
springApplication
,
ConfigurableApplicationContext
context
,
String
[]
args
)
{
super
(
springApplication
);
this
.
context
=
context
;
this
.
args
=
args
;
}
/**
* @return the springApplication
*/
public
SpringApplication
getSpringApplication
()
{
return
(
SpringApplication
)
getSource
();
}
/**
* @return the args
*/
public
String
[]
getArgs
()
{
return
this
.
args
;
}
/**
* @return the context
*/
public
ConfigurableApplicationContext
getApplicationContext
()
{
return
this
.
context
;
}
}
spring-boot/src/main/java/org/springframework/boot/SpringApplication
NewEnvironment
Event.java
→
spring-boot/src/main/java/org/springframework/boot/SpringApplication
EnvironmentAvailable
Event.java
View file @
3dacf4be
...
@@ -21,12 +21,12 @@ import org.springframework.core.env.ConfigurableEnvironment;
...
@@ -21,12 +21,12 @@ import org.springframework.core.env.ConfigurableEnvironment;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Environment
;
/**
/**
* Event published
as early
when a {@link SpringApplication} is starting up and the
* Event published when a {@link SpringApplication} is starting up and the
* {@link Environment} is first available for inspection and modification.
* {@link Environment} is first available for inspection and modification.
*
*
* @author Dave Syer
* @author Dave Syer
*/
*/
public
class
SpringApplication
NewEnvironment
Event
extends
ApplicationEvent
{
public
class
SpringApplication
EnvironmentAvailable
Event
extends
ApplicationEvent
{
private
ConfigurableEnvironment
environment
;
private
ConfigurableEnvironment
environment
;
private
String
[]
args
;
private
String
[]
args
;
...
@@ -36,8 +36,9 @@ public class SpringApplicationNewEnvironmentEvent extends ApplicationEvent {
...
@@ -36,8 +36,9 @@ public class SpringApplicationNewEnvironmentEvent extends ApplicationEvent {
* @param environment the environment that was just created
* @param environment the environment that was just created
* @param args the argumemts the application is running with
* @param args the argumemts the application is running with
*/
*/
public
SpringApplicationNewEnvironmentEvent
(
SpringApplication
springApplication
,
public
SpringApplicationEnvironmentAvailableEvent
(
ConfigurableEnvironment
environment
,
String
[]
args
)
{
SpringApplication
springApplication
,
ConfigurableEnvironment
environment
,
String
[]
args
)
{
super
(
springApplication
);
super
(
springApplication
);
this
.
environment
=
environment
;
this
.
environment
=
environment
;
this
.
args
=
args
;
this
.
args
=
args
;
...
...
spring-boot/src/main/java/org/springframework/boot/context/initializer/ConfigFileApplicationContextInitializer.java
View file @
3dacf4be
...
@@ -30,7 +30,7 @@ import java.util.Set;
...
@@ -30,7 +30,7 @@ import java.util.Set;
import
org.springframework.beans.PropertyValues
;
import
org.springframework.beans.PropertyValues
;
import
org.springframework.beans.factory.support.DefaultListableBeanFactory
;
import
org.springframework.beans.factory.support.DefaultListableBeanFactory
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
NewEnvironment
Event
;
import
org.springframework.boot.SpringApplication
EnvironmentAvailable
Event
;
import
org.springframework.boot.bind.PropertySourcesPropertyValues
;
import
org.springframework.boot.bind.PropertySourcesPropertyValues
;
import
org.springframework.boot.bind.RelaxedDataBinder
;
import
org.springframework.boot.bind.RelaxedDataBinder
;
import
org.springframework.boot.config.PropertiesPropertySourceLoader
;
import
org.springframework.boot.config.PropertiesPropertySourceLoader
;
...
@@ -89,7 +89,7 @@ import org.springframework.util.StringUtils;
...
@@ -89,7 +89,7 @@ import org.springframework.util.StringUtils;
*/
*/
public
class
ConfigFileApplicationContextInitializer
implements
public
class
ConfigFileApplicationContextInitializer
implements
ApplicationContextInitializer
<
ConfigurableApplicationContext
>,
ApplicationContextInitializer
<
ConfigurableApplicationContext
>,
ApplicationListener
<
SpringApplication
NewEnvironment
Event
>,
Ordered
{
ApplicationListener
<
SpringApplication
EnvironmentAvailable
Event
>,
Ordered
{
private
static
final
String
LOCATION_VARIABLE
=
"${spring.config.location}"
;
private
static
final
String
LOCATION_VARIABLE
=
"${spring.config.location}"
;
...
@@ -114,7 +114,7 @@ public class ConfigFileApplicationContextInitializer implements
...
@@ -114,7 +114,7 @@ public class ConfigFileApplicationContextInitializer implements
* ("spring.main.show_banner=false").
* ("spring.main.show_banner=false").
*/
*/
@Override
@Override
public
void
onApplicationEvent
(
SpringApplication
NewEnvironment
Event
event
)
{
public
void
onApplicationEvent
(
SpringApplication
EnvironmentAvailable
Event
event
)
{
Environment
created
=
event
.
getEnvironment
();
Environment
created
=
event
.
getEnvironment
();
if
(
created
instanceof
ConfigurableEnvironment
)
{
if
(
created
instanceof
ConfigurableEnvironment
)
{
SpringApplication
springApplication
=
event
.
getSpringApplication
();
SpringApplication
springApplication
=
event
.
getSpringApplication
();
...
...
spring-boot/src/main/java/org/springframework/boot/context/
initializer/LoggingApplicationContextInitializ
er.java
→
spring-boot/src/main/java/org/springframework/boot/context/
listener/LoggingApplicationListen
er.java
View file @
3dacf4be
...
@@ -14,24 +14,29 @@
...
@@ -14,24 +14,29 @@
* limitations under the License.
* limitations under the License.
*/
*/
package
org
.
springframework
.
boot
.
context
.
initializ
er
;
package
org
.
springframework
.
boot
.
context
.
listen
er
;
import
java.lang.management.ManagementFactory
;
import
java.lang.management.ManagementFactory
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplicationBeforeRefreshEvent
;
import
org.springframework.boot.SpringApplicationEnvironmentAvailableEvent
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.boot.logging.LogLevel
;
import
org.springframework.boot.logging.LogLevel
;
import
org.springframework.boot.logging.LoggingSystem
;
import
org.springframework.boot.logging.LoggingSystem
;
import
org.springframework.context.ApplicationContextInitializer
;
import
org.springframework.context.ApplicationContextInitializer
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.context.ApplicationEvent
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.event.SmartApplicationListener
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Environment
;
import
org.springframework.util.ClassUtils
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.util.ResourceUtils
;
import
org.springframework.util.ResourceUtils
;
...
@@ -50,7 +55,7 @@ import org.springframework.util.ResourceUtils;
...
@@ -50,7 +55,7 @@ import org.springframework.util.ResourceUtils;
* logback; and <code>classpath:logging.properties</code> for
* logback; and <code>classpath:logging.properties</code> for
* <code>java.util.logging</code>. If the correct one of those files is not found then
* <code>java.util.logging</code>. If the correct one of those files is not found then
* some sensible defaults are adopted from files of the same name but in the package
* some sensible defaults are adopted from files of the same name but in the package
* containing {@link LoggingApplication
ContextInitializ
er}.
* containing {@link LoggingApplication
Listen
er}.
* </p>
* </p>
*
*
* <p>
* <p>
...
@@ -68,9 +73,7 @@ import org.springframework.util.ResourceUtils;
...
@@ -68,9 +73,7 @@ import org.springframework.util.ResourceUtils;
* @author Dave Syer
* @author Dave Syer
* @author Phillip Webb
* @author Phillip Webb
*/
*/
public
class
LoggingApplicationContextInitializer
implements
public
class
LoggingApplicationListener
implements
SmartApplicationListener
{
ApplicationContextInitializer
<
ConfigurableApplicationContext
>,
ApplicationListener
<
SpringApplicationStartEvent
>,
Ordered
{
private
static
final
Map
<
String
,
String
>
ENVIRONMENT_SYSTEM_PROPERTY_MAPPING
;
private
static
final
Map
<
String
,
String
>
ENVIRONMENT_SYSTEM_PROPERTY_MAPPING
;
static
{
static
{
...
@@ -90,6 +93,12 @@ public class LoggingApplicationContextInitializer implements
...
@@ -90,6 +93,12 @@ public class LoggingApplicationContextInitializer implements
LOG_LEVEL_LOGGERS
.
add
(
LogLevel
.
TRACE
,
"org.hibernate.tool.hbm2ddl"
);
LOG_LEVEL_LOGGERS
.
add
(
LogLevel
.
TRACE
,
"org.hibernate.tool.hbm2ddl"
);
}
}
@SuppressWarnings
(
"unchecked"
)
private
static
Collection
<
Class
<?
extends
ApplicationEvent
>>
EVENT_TYPES
=
Arrays
.<
Class
<?
extends
ApplicationEvent
>>
asList
(
SpringApplicationStartEvent
.
class
,
SpringApplicationBeforeRefreshEvent
.
class
);
private
final
Log
logger
=
LogFactory
.
getLog
(
getClass
());
private
final
Log
logger
=
LogFactory
.
getLog
(
getClass
());
private
int
order
=
Integer
.
MIN_VALUE
+
11
;
private
int
order
=
Integer
.
MIN_VALUE
+
11
;
...
@@ -99,23 +108,42 @@ public class LoggingApplicationContextInitializer implements
...
@@ -99,23 +108,42 @@ public class LoggingApplicationContextInitializer implements
private
LogLevel
springBootLogging
=
null
;
private
LogLevel
springBootLogging
=
null
;
@Override
@Override
public
void
onApplicationEvent
(
SpringApplicationStartEvent
event
)
{
public
boolean
supportsEventType
(
Class
<?
extends
ApplicationEvent
>
eventType
)
{
if
(
System
.
getProperty
(
"PID"
)
==
null
)
{
for
(
Class
<?
extends
ApplicationEvent
>
type
:
EVENT_TYPES
)
{
System
.
setProperty
(
"PID"
,
getPid
());
if
(
type
.
isAssignableFrom
(
eventType
))
{
return
true
;
}
}
return
false
;
}
@Override
public
boolean
supportsSourceType
(
Class
<?>
sourceType
)
{
return
SpringApplication
.
class
.
isAssignableFrom
(
sourceType
);
}
@Override
public
void
onApplicationEvent
(
ApplicationEvent
event
)
{
if
(
event
instanceof
SpringApplicationEnvironmentAvailableEvent
)
{
SpringApplicationEnvironmentAvailableEvent
available
=
(
SpringApplicationEnvironmentAvailableEvent
)
event
;
initialize
(
available
.
getEnvironment
(),
available
.
getSpringApplication
()
.
getClassLoader
());
}
else
{
if
(
System
.
getProperty
(
"PID"
)
==
null
)
{
System
.
setProperty
(
"PID"
,
getPid
());
}
LoggingSystem
loggingSystem
=
LoggingSystem
.
get
(
ClassUtils
.
getDefaultClassLoader
());
loggingSystem
.
beforeInitialize
();
}
}
LoggingSystem
loggingSystem
=
LoggingSystem
.
get
(
event
.
getSpringApplication
()
.
getClass
().
getClassLoader
());
loggingSystem
.
beforeInitialize
();
}
}
/**
/**
* Initialize the logging system according to preferences expressed through the
* Initialize the logging system according to preferences expressed through the
* {@link Environment} and the classpath.
* {@link Environment} and the classpath.
*/
*/
@Override
protected
void
initialize
(
ConfigurableEnvironment
environment
,
ClassLoader
classLoader
)
{
public
void
initialize
(
ConfigurableApplicationContext
applicationContext
)
{
ConfigurableEnvironment
environment
=
applicationContext
.
getEnvironment
();
if
(
this
.
parseArgs
&&
this
.
springBootLogging
==
null
)
{
if
(
this
.
parseArgs
&&
this
.
springBootLogging
==
null
)
{
if
(
environment
.
containsProperty
(
"debug"
))
{
if
(
environment
.
containsProperty
(
"debug"
))
{
...
@@ -134,7 +162,7 @@ public class LoggingApplicationContextInitializer implements
...
@@ -134,7 +162,7 @@ public class LoggingApplicationContextInitializer implements
}
}
}
}
LoggingSystem
system
=
LoggingSystem
.
get
(
applicationContext
.
getClassLoader
()
);
LoggingSystem
system
=
LoggingSystem
.
get
(
classLoader
);
// User specified configuration
// User specified configuration
if
(
environment
.
containsProperty
(
"logging.config"
))
{
if
(
environment
.
containsProperty
(
"logging.config"
))
{
...
...
spring-boot/src/main/java/org/springframework/boot/liquibase/LiquibaseServiceLocatorInitializer.java
View file @
3dacf4be
...
@@ -6,9 +6,7 @@ import liquibase.servicelocator.ServiceLocator;
...
@@ -6,9 +6,7 @@ import liquibase.servicelocator.ServiceLocator;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.apache.commons.logging.LogFactory
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.context.ApplicationContextInitializer
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.context.ApplicationListener
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.util.ClassUtils
;
import
org.springframework.util.ClassUtils
;
/**
/**
...
@@ -19,7 +17,6 @@ import org.springframework.util.ClassUtils;
...
@@ -19,7 +17,6 @@ import org.springframework.util.ClassUtils;
* @author Dave Syer
* @author Dave Syer
*/
*/
public
class
LiquibaseServiceLocatorInitializer
implements
public
class
LiquibaseServiceLocatorInitializer
implements
ApplicationContextInitializer
<
ConfigurableApplicationContext
>,
ApplicationListener
<
SpringApplicationStartEvent
>
{
ApplicationListener
<
SpringApplicationStartEvent
>
{
static
final
Log
logger
=
LogFactory
.
getLog
(
LiquibaseServiceLocatorInitializer
.
class
);
static
final
Log
logger
=
LogFactory
.
getLog
(
LiquibaseServiceLocatorInitializer
.
class
);
...
@@ -31,10 +28,6 @@ public class LiquibaseServiceLocatorInitializer implements
...
@@ -31,10 +28,6 @@ public class LiquibaseServiceLocatorInitializer implements
}
}
}
}
@Override
public
void
initialize
(
ConfigurableApplicationContext
applicationContext
)
{
}
/**
/**
* Inner class to prevent class not found issues
* Inner class to prevent class not found issues
*/
*/
...
...
spring-boot/src/main/resources/META-INF/spring.factories
View file @
3dacf4be
...
@@ -4,6 +4,9 @@ org.springframework.boot.context.initializer.ConfigFileApplicationContextInitial
...
@@ -4,6 +4,9 @@ org.springframework.boot.context.initializer.ConfigFileApplicationContextInitial
org.springframework.boot.context.initializer.FileEncodingApplicationContextInitializer,\
org.springframework.boot.context.initializer.FileEncodingApplicationContextInitializer,\
org.springframework.boot.context.initializer.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.initializer.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.initializer.EnvironmentDelegateApplicationContextInitializer,\
org.springframework.boot.context.initializer.EnvironmentDelegateApplicationContextInitializer,\
org.springframework.boot.context.initializer.LoggingApplicationContextInitializer,\
org.springframework.boot.context.initializer.VcapApplicationContextInitializer
org.springframework.boot.context.initializer.VcapApplicationContextInitializer,\
# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.context.listener.LoggingApplicationListener,\
org.springframework.boot.liquibase.LiquibaseServiceLocatorInitializer
org.springframework.boot.liquibase.LiquibaseServiceLocatorInitializer
spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java
View file @
3dacf4be
...
@@ -176,7 +176,7 @@ public class SpringApplicationBuilderTests {
...
@@ -176,7 +176,7 @@ public class SpringApplicationBuilderTests {
SpringApplicationBuilder
application
=
new
SpringApplicationBuilder
(
SpringApplicationBuilder
application
=
new
SpringApplicationBuilder
(
ExampleConfig
.
class
).
web
(
false
);
ExampleConfig
.
class
).
web
(
false
);
this
.
context
=
application
.
run
();
this
.
context
=
application
.
run
();
assertEquals
(
7
,
application
.
application
().
getInitializers
().
size
());
assertEquals
(
5
,
application
.
application
().
getInitializers
().
size
());
}
}
@Test
@Test
...
@@ -184,7 +184,7 @@ public class SpringApplicationBuilderTests {
...
@@ -184,7 +184,7 @@ public class SpringApplicationBuilderTests {
SpringApplicationBuilder
application
=
new
SpringApplicationBuilder
(
SpringApplicationBuilder
application
=
new
SpringApplicationBuilder
(
ExampleConfig
.
class
).
child
(
ChildConfig
.
class
).
web
(
false
);
ExampleConfig
.
class
).
child
(
ChildConfig
.
class
).
web
(
false
);
this
.
context
=
application
.
run
();
this
.
context
=
application
.
run
();
assertEquals
(
8
,
application
.
application
().
getInitializers
().
size
());
assertEquals
(
6
,
application
.
application
().
getInitializers
().
size
());
}
}
@Test
@Test
...
@@ -198,7 +198,7 @@ public class SpringApplicationBuilderTests {
...
@@ -198,7 +198,7 @@ public class SpringApplicationBuilderTests {
}
}
});
});
this
.
context
=
application
.
run
();
this
.
context
=
application
.
run
();
assertEquals
(
8
,
application
.
application
().
getInitializers
().
size
());
assertEquals
(
6
,
application
.
application
().
getInitializers
().
size
());
}
}
@Configuration
@Configuration
...
...
spring-boot/src/test/java/org/springframework/boot/context/initializer/ConfigFileApplicationContextInitializerTests.java
View file @
3dacf4be
...
@@ -22,7 +22,7 @@ import java.util.Map;
...
@@ -22,7 +22,7 @@ import java.util.Map;
import
org.junit.After
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
NewEnvironment
Event
;
import
org.springframework.boot.SpringApplication
EnvironmentAvailable
Event
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Profile
;
import
org.springframework.context.annotation.Profile
;
...
@@ -67,7 +67,7 @@ public class ConfigFileApplicationContextInitializerTests {
...
@@ -67,7 +67,7 @@ public class ConfigFileApplicationContextInitializerTests {
@Test
@Test
public
void
randomValue
()
throws
Exception
{
public
void
randomValue
()
throws
Exception
{
StandardEnvironment
environment
=
new
StandardEnvironment
();
StandardEnvironment
environment
=
new
StandardEnvironment
();
this
.
initializer
.
onApplicationEvent
(
new
SpringApplication
NewEnvironment
Event
(
this
.
initializer
.
onApplicationEvent
(
new
SpringApplication
EnvironmentAvailable
Event
(
new
SpringApplication
(),
environment
,
new
String
[
0
]));
new
SpringApplication
(),
environment
,
new
String
[
0
]));
String
property
=
environment
.
getProperty
(
"random.value"
);
String
property
=
environment
.
getProperty
(
"random.value"
);
assertThat
(
property
,
notNullValue
());
assertThat
(
property
,
notNullValue
());
...
...
spring-boot/src/test/java/org/springframework/boot/context/
initializer/LoggingApplicationContextInitializ
erTests.java
→
spring-boot/src/test/java/org/springframework/boot/context/
listener/LoggingApplicationListen
erTests.java
View file @
3dacf4be
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
* limitations under the License.
* limitations under the License.
*/
*/
package
org
.
springframework
.
boot
.
context
.
initializ
er
;
package
org
.
springframework
.
boot
.
context
.
listen
er
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.logging.LogManager
;
import
java.util.logging.LogManager
;
...
@@ -31,7 +31,6 @@ import org.springframework.boot.OutputCapture;
...
@@ -31,7 +31,6 @@ import org.springframework.boot.OutputCapture;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.boot.SpringApplicationStartEvent
;
import
org.springframework.boot.TestUtils
;
import
org.springframework.boot.TestUtils
;
import
org.springframework.boot.context.initializer.LoggingApplicationContextInitializer
;
import
org.springframework.boot.logging.LogLevel
;
import
org.springframework.boot.logging.LogLevel
;
import
org.springframework.boot.logging.java.JavaLoggingSystem
;
import
org.springframework.boot.logging.java.JavaLoggingSystem
;
import
org.springframework.context.support.GenericApplicationContext
;
import
org.springframework.context.support.GenericApplicationContext
;
...
@@ -43,12 +42,12 @@ import static org.junit.Assert.assertThat;
...
@@ -43,12 +42,12 @@ import static org.junit.Assert.assertThat;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
/**
/**
* Tests for {@link LoggingApplication
ContextInitializ
er}.
* Tests for {@link LoggingApplication
Listen
er}.
*
*
* @author Dave Syer
* @author Dave Syer
* @author Phillip Webb
* @author Phillip Webb
*/
*/
public
class
LoggingApplication
ContextInitializ
erTests
{
public
class
LoggingApplication
Listen
erTests
{
private
static
final
String
[]
NO_ARGS
=
{};
private
static
final
String
[]
NO_ARGS
=
{};
...
@@ -58,7 +57,7 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -58,7 +57,7 @@ public class LoggingApplicationContextInitializerTests {
@Rule
@Rule
public
OutputCapture
outputCapture
=
new
OutputCapture
();
public
OutputCapture
outputCapture
=
new
OutputCapture
();
private
LoggingApplication
ContextInitializer
initializer
=
new
LoggingApplicationContextInitializ
er
();
private
LoggingApplication
Listener
initializer
=
new
LoggingApplicationListen
er
();
private
Log
logger
=
new
SLF4JLogFactory
().
getInstance
(
getClass
());
private
Log
logger
=
new
SLF4JLogFactory
().
getInstance
(
getClass
());
...
@@ -79,12 +78,15 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -79,12 +78,15 @@ public class LoggingApplicationContextInitializerTests {
System
.
clearProperty
(
"LOG_FILE"
);
System
.
clearProperty
(
"LOG_FILE"
);
System
.
clearProperty
(
"LOG_PATH"
);
System
.
clearProperty
(
"LOG_PATH"
);
System
.
clearProperty
(
"PID"
);
System
.
clearProperty
(
"PID"
);
if
(
this
.
context
!=
null
)
{
this
.
context
.
close
();
}
}
}
@Test
@Test
public
void
testDefaultConfigLocation
()
{
public
void
testDefaultConfigLocation
()
{
GenericApplicationContext
context
=
new
GenericApplicationContext
();
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
initializer
.
initialize
(
context
);
this
.
context
.
getClassLoader
()
);
this
.
logger
.
info
(
"Hello world"
);
this
.
logger
.
info
(
"Hello world"
);
String
output
=
this
.
outputCapture
.
toString
().
trim
();
String
output
=
this
.
outputCapture
.
toString
().
trim
();
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
contains
(
"Hello world"
));
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
contains
(
"Hello world"
));
...
@@ -95,7 +97,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -95,7 +97,8 @@ public class LoggingApplicationContextInitializerTests {
public
void
testOverrideConfigLocation
()
{
public
void
testOverrideConfigLocation
()
{
TestUtils
.
addEnviroment
(
this
.
context
,
TestUtils
.
addEnviroment
(
this
.
context
,
"logging.config: classpath:logback-nondefault.xml"
);
"logging.config: classpath:logback-nondefault.xml"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
this
.
logger
.
info
(
"Hello world"
);
this
.
logger
.
info
(
"Hello world"
);
String
output
=
this
.
outputCapture
.
toString
().
trim
();
String
output
=
this
.
outputCapture
.
toString
().
trim
();
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
contains
(
"Hello world"
));
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
contains
(
"Hello world"
));
...
@@ -106,7 +109,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -106,7 +109,8 @@ public class LoggingApplicationContextInitializerTests {
@Test
@Test
public
void
testOverrideConfigDoesNotExist
()
throws
Exception
{
public
void
testOverrideConfigDoesNotExist
()
throws
Exception
{
TestUtils
.
addEnviroment
(
this
.
context
,
"logging.config: doesnotexist.xml"
);
TestUtils
.
addEnviroment
(
this
.
context
,
"logging.config: doesnotexist.xml"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
// Should not throw
// Should not throw
}
}
...
@@ -115,8 +119,9 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -115,8 +119,9 @@ public class LoggingApplicationContextInitializerTests {
TestUtils
.
addEnviroment
(
this
.
context
,
TestUtils
.
addEnviroment
(
this
.
context
,
"logging.config: classpath:logback-nondefault.xml"
,
"logging.config: classpath:logback-nondefault.xml"
,
"logging.file: foo.log"
);
"logging.file: foo.log"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
Log
logger
=
LogFactory
.
getLog
(
LoggingApplicationContextInitializerTests
.
class
);
this
.
context
.
getClassLoader
());
Log
logger
=
LogFactory
.
getLog
(
LoggingApplicationListenerTests
.
class
);
logger
.
info
(
"Hello world"
);
logger
.
info
(
"Hello world"
);
String
output
=
this
.
outputCapture
.
toString
().
trim
();
String
output
=
this
.
outputCapture
.
toString
().
trim
();
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
startsWith
(
"foo.log"
));
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
startsWith
(
"foo.log"
));
...
@@ -126,8 +131,9 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -126,8 +131,9 @@ public class LoggingApplicationContextInitializerTests {
public
void
testAddLogPathProperty
()
{
public
void
testAddLogPathProperty
()
{
TestUtils
.
addEnviroment
(
this
.
context
,
TestUtils
.
addEnviroment
(
this
.
context
,
"logging.config: classpath:logback-nondefault.xml"
,
"logging.path: foo/"
);
"logging.config: classpath:logback-nondefault.xml"
,
"logging.path: foo/"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
Log
logger
=
LogFactory
.
getLog
(
LoggingApplicationContextInitializerTests
.
class
);
this
.
context
.
getClassLoader
());
Log
logger
=
LogFactory
.
getLog
(
LoggingApplicationListenerTests
.
class
);
logger
.
info
(
"Hello world"
);
logger
.
info
(
"Hello world"
);
String
output
=
this
.
outputCapture
.
toString
().
trim
();
String
output
=
this
.
outputCapture
.
toString
().
trim
();
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
startsWith
(
"foo/spring.log"
));
assertTrue
(
"Wrong output:\n"
+
output
,
output
.
startsWith
(
"foo/spring.log"
));
...
@@ -136,7 +142,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -136,7 +142,8 @@ public class LoggingApplicationContextInitializerTests {
@Test
@Test
public
void
parseDebugArg
()
throws
Exception
{
public
void
parseDebugArg
()
throws
Exception
{
TestUtils
.
addEnviroment
(
this
.
context
,
"debug"
);
TestUtils
.
addEnviroment
(
this
.
context
,
"debug"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
trace
(
"testattrace"
);
this
.
logger
.
trace
(
"testattrace"
);
assertThat
(
this
.
outputCapture
.
toString
(),
containsString
(
"testatdebug"
));
assertThat
(
this
.
outputCapture
.
toString
(),
containsString
(
"testatdebug"
));
...
@@ -146,7 +153,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -146,7 +153,8 @@ public class LoggingApplicationContextInitializerTests {
@Test
@Test
public
void
parseTraceArg
()
throws
Exception
{
public
void
parseTraceArg
()
throws
Exception
{
TestUtils
.
addEnviroment
(
this
.
context
,
"trace"
);
TestUtils
.
addEnviroment
(
this
.
context
,
"trace"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
trace
(
"testattrace"
);
this
.
logger
.
trace
(
"testattrace"
);
assertThat
(
this
.
outputCapture
.
toString
(),
containsString
(
"testatdebug"
));
assertThat
(
this
.
outputCapture
.
toString
(),
containsString
(
"testatdebug"
));
...
@@ -157,7 +165,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -157,7 +165,8 @@ public class LoggingApplicationContextInitializerTests {
public
void
parseArgsDisabled
()
throws
Exception
{
public
void
parseArgsDisabled
()
throws
Exception
{
this
.
initializer
.
setParseArgs
(
false
);
this
.
initializer
.
setParseArgs
(
false
);
TestUtils
.
addEnviroment
(
this
.
context
,
"debug"
);
TestUtils
.
addEnviroment
(
this
.
context
,
"debug"
);
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
debug
(
"testatdebug"
);
assertThat
(
this
.
outputCapture
.
toString
(),
not
(
containsString
(
"testatdebug"
)));
assertThat
(
this
.
outputCapture
.
toString
(),
not
(
containsString
(
"testatdebug"
)));
}
}
...
@@ -168,7 +177,8 @@ public class LoggingApplicationContextInitializerTests {
...
@@ -168,7 +177,8 @@ public class LoggingApplicationContextInitializerTests {
this
.
initializer
.
setParseArgs
(
false
);
this
.
initializer
.
setParseArgs
(
false
);
this
.
initializer
.
onApplicationEvent
(
new
SpringApplicationStartEvent
(
this
.
initializer
.
onApplicationEvent
(
new
SpringApplicationStartEvent
(
this
.
springApplication
,
new
String
[]
{
"--debug"
}));
this
.
springApplication
,
new
String
[]
{
"--debug"
}));
this
.
initializer
.
initialize
(
this
.
context
);
this
.
initializer
.
initialize
(
this
.
context
.
getEnvironment
(),
this
.
context
.
getClassLoader
());
this
.
logger
.
debug
(
"testatdebug"
);
this
.
logger
.
debug
(
"testatdebug"
);
assertThat
(
this
.
outputCapture
.
toString
(),
not
(
containsString
(
"testatdebug"
)));
assertThat
(
this
.
outputCapture
.
toString
(),
not
(
containsString
(
"testatdebug"
)));
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment