0

I'm trying to wire 2 objects using spring boot annotations but all my attempts in vain.

So I have a DataSource and I would like to use it in DAO class. There is my code below. Thank you!

            @Component
            public class DataBaseUtility {
                private static BasicDataSource dataSource;

                public DataBaseUtility() {
                    this.dataSource = getDataSource();
                }
                @Override
                public String toString() {
                    return "";
                }

                public BasicDataSource getDataSource() {

                    if (dataSource == null)
                    {
                        dataSource = new BasicDataSource();
                    }
                    return dataSource;
                }
            }




            @Component
            public class JdbcPersonDao implements PersonDAO {
                @Autowired
                @Qualifier("dbu")
                private static DataBaseUtility dataBaseUtility;
                public JdbcPersonDao(){
                }

            }

            public static void main(String[] args) {
                    ConfigurableApplicationContext context = 
                    SpringApplication.run(RocApplication.class, 
                                                               args);
                    JdbcPersonDao jdbcPersonDao = 
                    context.getBean(JdbcPersonDao.class);
                    Person p = jdbcPersonDao.findByID(5L);
           }
  • Hello, could you how as the main class? or where you have created your component scan. – Ismail Mar 29 '19 at 11:00
  • Inside JdbcPersonDao class there is a method that fetches data from database. – Dr.Dennis B Mar 29 '19 at 11:01
  • @SpringBootApplication public class RocApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(RocApplication.class, args); JdbcPersonDao jdbcPersonDao = context.getBean(JdbcPersonDao.class); Person p = jdbcPersonDao.findByID(5L); System.out.println(p.toString()); } } – Dr.Dennis B Mar 29 '19 at 11:01
  • 3
    You cannot autowire static fields. Check https://stackoverflow.com/questions/1018797/can-you-use-autowired-with-static-fields – Praveen E Mar 29 '19 at 11:04
  • Indeed! Thank you! – Dr.Dennis B Mar 29 '19 at 11:15

0 Answers0