Spring boot - autowire fails












1















I'm trying to fetch some properties from application.properties file ad my code is the following:



Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MySendService().sendReport();
}
}


My service class:



package it.mysite.service;

@Service
public class MySendService {

@Value("${mail.fc.to}")
private String to;

@Value("${mail.fc.subject}")
private String subject;

@Autowired ReportService reportEmailService;

@Autowired MailProperties mailProperties;

public void sendReport(){
if(mailProperties.getTo().length > 0) {
}
}


Class where I fetch the properties:



package it.mysite.properties;

@Component
@ConfigurationProperties("mail.fc")
public class MailProperties {

private String to;

public String getTo(){
return to;
}
}


Config file:



# Email config
mail.fc.to=my@mail.com
mail.fc.subject=My subject


All of the @Autowired properties are null, and also the @Value properties (I tried to get them in that way also). When I print my context I can see these classes in the bean list, and for what I know my packages hierarchy is correct, so what can be the problem?



EDIT
Ok, I got the suggestion from the duplicate question and I changed my main class code as follows:
Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

@Autowired MySendService mySendService;

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MailSenderApplication().boot();
}

private void boot(){
mySendService.sendReport();
}
}


But I got the same error. Wasn't that the suggestion?










share|improve this question




















  • 1





    You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

    – JB Nizet
    Nov 23 '18 at 11:17













  • OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

    – esseara
    Nov 23 '18 at 11:33






  • 1





    @esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

    – g00glen00b
    Nov 23 '18 at 12:00


















1















I'm trying to fetch some properties from application.properties file ad my code is the following:



Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MySendService().sendReport();
}
}


My service class:



package it.mysite.service;

@Service
public class MySendService {

@Value("${mail.fc.to}")
private String to;

@Value("${mail.fc.subject}")
private String subject;

@Autowired ReportService reportEmailService;

@Autowired MailProperties mailProperties;

public void sendReport(){
if(mailProperties.getTo().length > 0) {
}
}


Class where I fetch the properties:



package it.mysite.properties;

@Component
@ConfigurationProperties("mail.fc")
public class MailProperties {

private String to;

public String getTo(){
return to;
}
}


Config file:



# Email config
mail.fc.to=my@mail.com
mail.fc.subject=My subject


All of the @Autowired properties are null, and also the @Value properties (I tried to get them in that way also). When I print my context I can see these classes in the bean list, and for what I know my packages hierarchy is correct, so what can be the problem?



EDIT
Ok, I got the suggestion from the duplicate question and I changed my main class code as follows:
Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

@Autowired MySendService mySendService;

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MailSenderApplication().boot();
}

private void boot(){
mySendService.sendReport();
}
}


But I got the same error. Wasn't that the suggestion?










share|improve this question




















  • 1





    You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

    – JB Nizet
    Nov 23 '18 at 11:17













  • OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

    – esseara
    Nov 23 '18 at 11:33






  • 1





    @esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

    – g00glen00b
    Nov 23 '18 at 12:00
















1












1








1


1






I'm trying to fetch some properties from application.properties file ad my code is the following:



Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MySendService().sendReport();
}
}


My service class:



package it.mysite.service;

@Service
public class MySendService {

@Value("${mail.fc.to}")
private String to;

@Value("${mail.fc.subject}")
private String subject;

@Autowired ReportService reportEmailService;

@Autowired MailProperties mailProperties;

public void sendReport(){
if(mailProperties.getTo().length > 0) {
}
}


Class where I fetch the properties:



package it.mysite.properties;

@Component
@ConfigurationProperties("mail.fc")
public class MailProperties {

private String to;

public String getTo(){
return to;
}
}


Config file:



# Email config
mail.fc.to=my@mail.com
mail.fc.subject=My subject


All of the @Autowired properties are null, and also the @Value properties (I tried to get them in that way also). When I print my context I can see these classes in the bean list, and for what I know my packages hierarchy is correct, so what can be the problem?



EDIT
Ok, I got the suggestion from the duplicate question and I changed my main class code as follows:
Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

@Autowired MySendService mySendService;

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MailSenderApplication().boot();
}

private void boot(){
mySendService.sendReport();
}
}


But I got the same error. Wasn't that the suggestion?










share|improve this question
















I'm trying to fetch some properties from application.properties file ad my code is the following:



Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MySendService().sendReport();
}
}


My service class:



package it.mysite.service;

@Service
public class MySendService {

@Value("${mail.fc.to}")
private String to;

@Value("${mail.fc.subject}")
private String subject;

@Autowired ReportService reportEmailService;

@Autowired MailProperties mailProperties;

public void sendReport(){
if(mailProperties.getTo().length > 0) {
}
}


Class where I fetch the properties:



package it.mysite.properties;

@Component
@ConfigurationProperties("mail.fc")
public class MailProperties {

private String to;

public String getTo(){
return to;
}
}


Config file:



# Email config
mail.fc.to=my@mail.com
mail.fc.subject=My subject


All of the @Autowired properties are null, and also the @Value properties (I tried to get them in that way also). When I print my context I can see these classes in the bean list, and for what I know my packages hierarchy is correct, so what can be the problem?



EDIT
Ok, I got the suggestion from the duplicate question and I changed my main class code as follows:
Main Application class:



package it.mysite;

@SpringBootApplication
@EnableTransactionManagement
public class MailSenderApplication {

@Autowired MySendService mySendService;

public static void main(String args){
ConfigurableApplicationContext context = SpringApplication.run(MailSenderApplication.class, args);

System.out.println("*****");
for (String name : context.getBeanDefinitionNames()) {
System.out.println(name);
}
System.out.println("*****");
new MailSenderApplication().boot();
}

private void boot(){
mySendService.sendReport();
}
}


But I got the same error. Wasn't that the suggestion?







spring spring-boot properties autowired






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 11:14







esseara

















asked Nov 23 '18 at 10:42









essearaesseara

298822




298822








  • 1





    You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

    – JB Nizet
    Nov 23 '18 at 11:17













  • OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

    – esseara
    Nov 23 '18 at 11:33






  • 1





    @esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

    – g00glen00b
    Nov 23 '18 at 12:00
















  • 1





    You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

    – JB Nizet
    Nov 23 '18 at 11:17













  • OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

    – esseara
    Nov 23 '18 at 11:33






  • 1





    @esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

    – g00glen00b
    Nov 23 '18 at 12:00










1




1





You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

– JB Nizet
Nov 23 '18 at 11:17







You're still doing the same mistake: using new to create Spring beans. Don't. Get the Spring bean from the Spring context. Or better, use a runner: docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…

– JB Nizet
Nov 23 '18 at 11:17















OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

– esseara
Nov 23 '18 at 11:33





OMG thank you. This pointed me in the right direction. If you write your comment as an answer I'll chose that as the correct one.

– esseara
Nov 23 '18 at 11:33




1




1





@esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

– g00glen00b
Nov 23 '18 at 12:00







@esseara You can't write it as an answer because the question has been closed as a duplicate. Essentially it's the same problem (meaning you can't use the new keyword that way). You can go to the other question though and vote for the most useful answer over there.

– g00glen00b
Nov 23 '18 at 12:00














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445133%2fspring-boot-autowire-fails%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53445133%2fspring-boot-autowire-fails%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Create new schema in PostgreSQL using DBeaver

Deepest pit of an array with Javascript: test on Codility

Costa Masnaga