Loggerオブジェクトを手動で作成していますが、SpringはUserServiceを期待通りに初期化しません。 SpringにUserServiceの初期化を強制するにはどうすればよいですか?AutowiredなしでSpringサービスを初期化するには?
以下のコードを試しましたが、初期化されません。
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
userService = context.getBean(UserService.class);
ここはJobServiceです。
@Service
public class JobService{
private static final Logger logger = LoggerFactory.getLogger(JobService.class);
doJob(){
logger.info("Job is starting...");
.....
}
}
My LoggerFactory;
public class LoggerFactory {
public static Logger getLogger(Class clazz) {
Logger logger = new Logger(clazz);
return logger;
}
private LoggerFactory() {
throw new UnsupportedOperationException("Not instantiable");
}
}
そして、私のLogger;
public class Logger {
@Autowired
UserService userService;
public void info(String message){
User user = userService.getCurrentUser(); //userService is null
}
}
すべてのプロジェクトにユーザー情報を追加する必要があるため、ユーザー情報を取得してLoggerに渡すことはできません(何千ものクラスがあります) UserServiceを初期化する方法は? – hellzone
ひどいデザインのような音。何千?疑わしい。 – duffymo