Spring注解@profile的使用

spring中@profile与maven中的profile很相似,通过配置来改变参数。

例如在开发环境与生产环境使用不同的参数,可以配置两套配置文件,通过@profile来激活需要的环境,但维护两套配置文件不如maven中维护一套配置文件,在pom中通过profile来修改配置文件的参数来的实惠。
也有例外,比如我在开发中调用商城接口经常不能返回我需要的数据,每次都需要mock数据,所以我写了一个mock参数的借口调用类,在开发环境中就使用这个类,测试环境与生产环境则使用正常的借口调用类,这样就不用每次开发的时候去手动改一些代码。

注:@profile在3.2以后的版本支持方法级别和类级别,3.1版本只支持类级别。

言归正传,说下@profile在spring mvc和spring boot的用法。

Spring mvc:

一、注解配置

/** 配置开发环境调用类  **/  

@service("product")  

@profile("dev")  

public class ProductRpcImpl implements ProductRpc  

      public String productBaseInfo(Long sku){  
      
         return productResource.queryBaseInfo(Long sku);  
        }  
   }  

/** 配置生产环境调用类  **/  

@service("product")  
@profile("prop")  
public class MockProductRpcImpl implements ProductRpc  

	   public String productBaseInfo(Long sku){  
	   
        return “iphone7”;  
       }  
  }  

二、xml配置

<!-- 开发环境 -->  

<beans profile="dev">  

<bean id="beanname" class="com.demo.Product"/>  

</beans>  
  

<!-- 生产环境 -->  

<beans profile="prop">  

<bean id="beanname" class="com.demo.MockProduct"/>  

</beans>  

三、激活配置

1.在servlet上下文中进行配置(web.xml)

<context-param>  

	<param-name>spring.profiles.default</param-name>  

	<param-value>dev</param-value>  

</context-param>  

2.作为DispatcherServlet的初始化参数

<servlet>  

	<servlet-name>springMVC</servlet-name>  

		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  

		<init-param>  

			<param-name>contextConfigLocation</param-name>  

			<param-value>classpath:/spring-servlet.xml</param-value>  

		</init-param>  

		<init-param>  

			<param-name>spring.profiles.default</param-name>  

			<param-value>dev</param-value>  

		</init-param>  

	<load-on-startup>1</load-on-startup>  

</servlet>  
Spring boot:

1、注解配置(类似mvc)

//在这个例子中,我们就能为 SecurityConfig 加上 @Profile 注解:
@Profile("production")
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
}

2、配置和激活(在application.properities/application.yml中)
  运行时设置 spring.profiles.active 属性就能激活Profile,任意设置配置属性的方式都能用于设置这个值。例如,在命令行里运行应用程序时,可以这样激活 production Profile:

$ java -jar readinglist-0.0.1-SNAPSHOT.jar --spring.profiles.active=production

也可以向application.properities/application.yml里添加 spring.profiles.active 属性:

spring:
	profiles:
		active: production

yml的配置切换:

logging:
  level:
    root: INFO
---
spring:
  profiles: development

logging:
  level:
    root: DEBUG
---
spring:
  profiles: production

logging:
  path: /tmp/
  file: BookWorm.log
  level:
    root: WARN
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值