前言
我的项目是一个springMVC项目,spring版本为4.3.9。在开发中遇到一个需求,就是根据启动参数的不同,注入指定的AOP类。
代码
我的AOP类为如下,加上@Profile(“open”)指定启动参数传入“open",即 在tomcat启动时输入命令
-Dspring.profiles.active=open。
若不知@Profile注解,请自行百度了解。
@Aspect
@Component
@Profile("open")
public class CastTimeLogAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(CastTimeLogAspect.class);
public static ConcurrentHashMap<String, MapValue> map = new ConcurrentHashMap();
static {
LOGGER.info("注解通知成功启动");
new Thread(new RemoveMapTask()).start();
}
@Before("within(main.bridge..*) && @annotation(trv)")
public void castTimeLogBefore(JoinPoint jp, CastTimeLog trv) throws IOException, ServletException {
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
// do something
}
}
问题来了,在windows我们该如何传入我们的参数。
1.在cmd模式下输入
输入 startup.bat -Dspring.profiles.active=open
但是经过测试无效。于是修改tomcat安装目录下的catalina.bat文件。用编辑器打开后,输入
set “JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=open”
2.修改catalina.bat文件
保存之后,直接双击startup.bat 即可。日志打印时可以看到输入
静态代码块的日志也将正确输出,表示该类已经注入spring容器。
版权声明:本文为qq_27576109原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。