学习AOP动态代理源码的时候,看到了这么一行代码,记录一下
final SecurityManager sm = System.getSecurityManager();
if (sm !=null) {
checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
}
这是JAVA安全管理器SecurityManager
当运行未知的Java程序的时候,该程序可能有恶意代码(删除系统文件、重启系统等),为了防止运行恶意代码对系统产生影响,需要对运行的代码的权限进行控制,这时候就要启用Java安全管理器。
可以通过参数方式启动(可以指定配置文件,不写就不指定)
-Djava.security.manager -Djava.security.policy="E:/java.policy"
或者代码方式启动
System.setSecurityManager(new SecurityManager());