我有必须@Autowired在静态方法中使用的服务.我知道这是错的,但我不能改变当前的设计,因为它需要大量的工作,所以我需要一些简单的黑客.我不能改为randomMethod()非静态,我需要使用这个自动装配的bean.任何线索怎么做?
@Service
public class Foo {
public int doStuff() {
return 1;
}
}
public class Boo {
@Autowired
Foo foo;
public static void randomMethod() {
foo.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud) 我通过 Spring 实现的 Rest Web 服务很少。问题是,如果抛出任何异常,webservice 将返回 json 对象,其中包含包含堆栈跟踪的格式化错误消息。我可以单点处理异常,并返回带有不包含堆栈跟踪的消息的自定义 json 对象吗?
我看到了 spring mvc 的描述,但我并没有真正使用它来构建我的视图等。
我将更具体地为Android手机制作应用程序.
我将有多个活动和许多课程,所以我正在考虑存储游戏数据.
游戏数据应该对于活动是可见的,所以我在想是否应该使用单例来存储数据并从任何活动中轻松接收数据,或者我应该使用Intents传递数据?
会有少量和大量的数据(分数很小,如地图等大而且......).
对于分数,我会使用意图,但那么以同样的方式做所有事情不是更好吗?如果是的话,我认为整个游戏状态的单身人士会更好.有任何想法吗?
我正在实施一个应用程序,该应用程序具有一些访问完全基于权限的方法。权限是使用 Spring 实现的。使用@PreAuthorize注释在方法之上添加权限。问题是我希望在注释中有完全自定义的方法 (EL)。所以我想实现的是:
@PreAuthorize("customAllowThis()")
public void foo() { }
Run Code Online (Sandbox Code Playgroud)
我认为有两种方法:
方法 1:尝试覆盖SecurityExpressionRoot并在那里添加我的自定义方法。我将在不同的方法上使用多个授权服务,因此将所有特定方法都放在 SecurityExpressionRoot 中会造成很大的混乱。
方法 2:创建服务并将方法放在那里:
@Component
public class AuthorisationService {
public boolean allowThis() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
并执行以下操作:
@PreAuthorize("@authorisationService.customAllowThis()")
public void foo() { }
Run Code Online (Sandbox Code Playgroud)
我更喜欢方法 2,尽管它看起来像绕过 Spring 的“自然顺序”。在如何处理这种情况方面是否有任何好的/最佳做法?关键是我不想将所有特定方法都放在一个类中,但另一方面我不想做一些“肮脏”的事情。