• Now all data be ready for publish, We had made our blog alive now. Haha.



  • These days CCP GFW blocked all the IPs from US and when I switch my IP in google Cloud, the disk data cannot be restore again. I have to restart my blog totally, Now the website is still building…



@Autowired bean is null when referenced in the constructor of another bean- Stack Overflow

Java PingBook 1 months ago (10-23) 13 0

Question

Shown below is a snippet of code where I try and reference my ApplicationProperties bean. When I reference it from the constructor it is null, but when referenced from another method it is fine. Up until now I have not had no problem using this autowired bean in other classes. But this is the first time I have tried to use it in the constructor of another class.

In the code snippet below applicationProperties is null when called from the constructor but when referenced in the convert method it is not. What am I missing

@Component
public class DocumentManager implements IDocumentManager {

private Log logger = LogFactory.getLog(this.getClass());
private OfficeManager officeManager = null;
private ConverterService converterService = null;

@Autowired
private IApplicationProperties applicationProperties;

// If I try and use the Autowired applicationProperties bean in the constructor
// it is null ?

public DocumentManager() {
startOOServer();
}

private void startOOServer() {
if (applicationProperties != null) {
if (applicationProperties.getStartOOServer()) {
try {
if (this.officeManager == null) {
this.officeManager = new DefaultOfficeManagerConfiguration()
.buildOfficeManager();
this.officeManager.start();
this.converterService = new ConverterService(this.officeManager);
}
} catch (Throwable e){
logger.error(e);
}
}
}
}

public byte[] convert(byte[] inputData, String sourceExtension, String targetExtension) {
byte[] result = null;

startOOServer();

Below is s snippet from ApplicationProperties …

@Component
public class ApplicationProperties implements IApplicationProperties {

/* Use the appProperties bean defined in WEB-INF/applicationContext.xml
* which in turn uses resources/server.properties
*/
@Resource(name=”appProperties”)
private Properties appProperties;

public Boolean getStartOOServer() {
String val = appProperties.getProperty(“startOOServer”, “false”);
if( val == null ) return false;
val = val.trim();
return val.equalsIgnoreCase(“true”) || val.equalsIgnoreCase(“on”) || val.equalsIgnoreCase(“yes”);
}

Answer

Autowiring (link from Dunes comment) happens after the construction of an object. Therefore they will not be set until after the constructor has completed.

If you need to run some initialization code, you should be able to pull the code in the constructor into a method, and annotate that method with @PostConstruct.




Copyright from PingBook Blog, If not specified, they are original. This site uses BY-NC-SAProtocol authenticated.
For reprinting, please indicate the link of the original text:@Autowired bean is null when referenced in the constructor of another bean- Stack Overflow
LIKE (0)
[1725641479@qq.com]
SHARE (0)
PingBook
Author:
We create, We sharing! Tag every value data your sharing
Submit comments
Cancel comments
emoji picture bold strikethrough center italic check in

Hi,you need to provide your name and email adress!

  • Name (Required)
  • Email (Required)
  • Website