public class Player {
@Autowired gameService
@Getter @Setter String name;
public Player(String name) {
this.name = name
}
public doSomething() {
gameService.something() // gameService is null!
}
}
@Service
class GameService { public void something() {...} }
如果我要做新球员(“约翰”)。doSomething()java抱怨这一点。gameService为null。需要实例化Player类。
是否可以使gameService自动连接到服务正确?
由于您希望gameService自动连线,我相信您希望基于该gameService上的Player对象进行一些处理。如果是,请不要调用gameService。something(),调用gameService。某物(播放器)。
以下是一个可能的解决方案:
@Component
public class Player {
@Autowired GameService gameService;
@Getter
@Setter
String name;
public Player() {
}
public Player(String name) {
this.name = name;
}
public void doSomething(Player player) {
gameService.something(player);
}
}
然而,在调用方方面,它应该类似于:
@Autowired
Player player;
...
public void callPlayer() {
Player johnPlayer = new Player("John");
player.doSomething(johnPlayer);
}
这样做的原因是让spring创建播放器组件并进行依赖项注入,然后利用spring创建的组件。
希望这会有帮助。
您可以将Player设置为一个使自动布线可用的组件:
@Component
public class Player {
@Autowired
GameService gameService
此外,依赖注入最佳实践是使用基于构造函数的注入:
@Component
public class Player {
private final GameService gameService;
@Autowired
public Player(GameService gameService){
this.gameService = gameService;
}
如果我要做新玩家(“约翰”). doThings()
当您自己创建java实例时,Spring框架不知道这个实例。因此Spring不会用它包含的任何依赖项来丰富它。
要让您的类通过@Autow的
包含依赖项,您必须让Spring创建此实例。Spring实际上会创建您提供的类的代理,而不是您编写的实际类。实现这一点的一种方法是将您的类Player
标记为@Component
,然后您还必须从Spring框架中检索实例播放器以正确包含它的依赖项。
请记住,在默认情况下,播放器将成为spring的一个单件,这与我看到的这个类的逻辑用途不完全匹配。要么你想让它成为一个原型,要么甚至更好,我认为你必须将游戏服务的使用转移到玩家类之外。
也许您可以让GameService
中的方法某事()
将Player
作为参数并做同样的事情。然后您可以在任何地方自动装配gameService
,听起来它应该是一个单例。
假设我有以下代码: 是否有可能在中调用来自的的编译器错误?我知道实际上你会把那个方法放在构造函数中,但这个问题是出于好奇。
ConfigServiceDAO.java ConfigServiceDAO中的DAOBuilder始终为null,这是有道理的,因为我的理解是,当类被手动实例化时,spring注入不会发生。如果我希望将ConfigServiceDAO保留为非spring组件,那么这里的解决方案是什么? ====Edit=====我知道可以将ConfigServiceDAO作为一个spring组件,并autowi
在另一个项目中实现之前,我一直试图按照这里的教程设置演示,以帮助我理解本地机器上的SSO。我遇到了一个使我陷入困境的问题。我收到错误通知我添加一个bean。请让我知道我缺少了什么代码。我无法使程序运行。 文件系统树 authApplication.java 应用程序.属性 给出错误(不是运行的全部控制台输出,但这是错误)
一个好的实践是将服务定义为接口并在类上实现它。 假设我有两个实现相同接口的类,我想根据属性(而不是概要文件)来区分它们。我的意思是,如果我有Autowire private MyServiceInterface myService如果我有myproperty=potato,我想接收PotatoServiceImpl的实例;如果我有myproperty=tomato,我想接收TomatoServic
问题内容: 在Json.NET中,如何进行反序列化时需要的所有属性?我知道我可以使用消息中的属性来执行此操作,但是我不想这样做。主要是因为这将要求我的消息库具有外部依赖关系。 我尝试了MissingMemberHandling.Error设置,但它与我想要的相反。我对具有额外属性的JSON表示满意。当JSON中缺少任何目标对象属性时,我希望它失败。 我实际上是反序列化为F#记录,并且这些属性通常不
5.4. 类的实例化 5.4.1. 垃圾回收 在 Python 中对类进行实例化很直接。为了对类进行实例化,只要调用类,好象它是一个函数,传入定义在 __init__ 方法中的参数。返回值将是新创建的对象。 例 5.7. 创建 FileInfo 实例 >>> import fileinfo >>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")