/* * Spring提供的Profile: * 可以根据当前环境,动态的激活和切换一系列的组件的功能 * 见myProfileConfig.java * @Profile(value=“环境名称”):指定组件在哪个环境的情况下才能被注册到容器中;默认不指定,任何环境下都能注册这个组件 * 默认的环境名称:default * 因为@Profile的目标是:@Target({ElementType.TYPE, ElementType.METHOD}) * 所以可以标识在方法上,也可以标识在类上 */
myProfileConfig.java: @PropertySource(“classpath:jdbcConfig.properties”) @Configuration public class myProfileConfig implements EmbeddedValueResolverAware { @Value("
d
b
.
u
s
e
r
"
)
p
r
i
v
a
t
e
S
t
r
i
n
g
u
s
e
r
;
p
r
i
v
a
t
e
S
t
r
i
n
g
V
a
l
u
e
R
e
s
o
l
v
e
r
e
m
b
e
d
d
e
d
V
a
l
u
e
R
e
s
o
l
v
e
r
;
p
r
i
v
a
t
e
S
t
r
i
n
g
r
e
s
o
l
v
e
S
t
r
i
n
g
V
a
l
u
e
;
/
/
默
认
环
境
:
/
/
@
P
r
o
f
i
l
e
(
"
d
e
f
a
u
l
t
"
)
/
/
测
试
环
境
@
P
r
o
f
i
l
e
(
"
t
e
s
t
"
)
@
B
e
a
n
(
"
d
a
t
a
S
o
u
r
c
e
T
e
s
t
"
)
p
u
b
l
i
c
D
a
t
a
S
o
u
r
c
e
d
a
t
a
S
o
u
r
c
e
T
e
s
t
(
@
V
a
l
u
e
(
"
{db.user}") private String user; private StringValueResolver embeddedValueResolver; private String resolveStringValue; //默认环境: //@Profile("default") // 测试环境 @Profile("test") @Bean("dataSourceTest") public DataSource dataSourceTest(@Value("
db.user")privateStringuser;privateStringValueResolverembeddedValueResolver;privateStringresolveStringValue;//默认环境://@Profile("default")//测试环境@Profile("test")@Bean("dataSourceTest")publicDataSourcedataSourceTest(@Value("{db.password}")String pwd) throws PropertyVetoException { ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); comboPooledDataSource.setUser(user); comboPooledDataSource.setPassword(pwd); comboPooledDataSource.setDriverClass(resolveStringValue); comboPooledDataSource.setJdbcUrl(“jdbc:mysql://127.0.0.1:3307/test3307”); return null; } // 开发环境 @Profile(“dev”) @Bean(“dataSourceDev”) public DataSource dataSourceDev(@Value("
d
b
.
p
a
s
s
w
o
r
d
"
)
S
t
r
i
n
g
p
w
d
)
t
h
r
o
w
s
P
r
o
p
e
r
t
y
V
e
t
o
E
x
c
e
p
t
i
o
n
C
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
c
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
=
n
e
w
C
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
(
)
;
c
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
.
s
e
t
U
s
e
r
(
u
s
e
r
)
;
c
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
.
s
e
t
P
a
s
s
w
o
r
d
(
p
w
d
)
;
c
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
.
s
e
t
D
r
i
v
e
r
C
l
a
s
s
(
r
e
s
o
l
v
e
S
t
r
i
n
g
V
a
l
u
e
)
;
c
o
m
b
o
P
o
o
l
e
d
D
a
t
a
S
o
u
r
c
e
.
s
e
t
J
d
b
c
U
r
l
(
"
j
d
b
c
:
m
y
s
q
l
:
/
/
127.0.0.1
:
3307
/
w
f
c
h
a
t
"
)
;
r
e
t
u
r
n
n
u
l
l
;
/
/
生
产
环
境
@
P
r
o
f
i
l
e
(
"
p
r
o
d
"
)
@
B
e
a
n
(
"
d
a
t
a
S
o
u
r
c
e
P
r
o
d
"
)
p
u
b
l
i
c
D
a
t
a
S
o
u
r
c
e
d
a
t
a
S
o
u
r
c
e
P
r
o
d
(
@
V
a
l
u
e
(
"
{db.password}")String pwd) throws PropertyVetoException { ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); comboPooledDataSource.setUser(user); comboPooledDataSource.setPassword(pwd); comboPooledDataSource.setDriverClass(resolveStringValue); comboPooledDataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3307/wfchat"); return null; } // 生产环境 @Profile("prod") @Bean("dataSourceProd") public DataSource dataSourceProd(@Value("
db.password")Stringpwd)throwsPropertyVetoExceptionComboPooledDataSourcecomboPooledDataSource=newComboPooledDataSource();comboPooledDataSource.setUser(user);comboPooledDataSource.setPassword(pwd);comboPooledDataSource.setDriverClass(resolveStringValue);comboPooledDataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3307/wfchat");returnnull;//生产环境@Profile("prod")@Bean("dataSourceProd")publicDataSourcedataSourceProd(@Value("{db.password}")String pwd) throws PropertyVetoException { ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); comboPooledDataSource.setUser(user); comboPooledDataSource.setPassword(pwd); comboPooledDataSource.setDriverClass(resolveStringValue); comboPooledDataSource.setJdbcUrl(“jdbc:mysql://127.0.0.1:3307/wfchatappdata”); return null; } @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { this.embeddedValueResolver=resolver; resolveStringValue = embeddedValueResolver.resolveStringValue("${db.driver}"); } }
可以通过前几章介绍的切换环境的方式测试效果!
Spring详解(三)
最新推荐文章于 2023-12-07 09:48:43 发布