При использовании Spring Data JpaRepository настройки через JavaConfig, вылетает NoSuchBeanDefinitionException

102
19 октября 2019, 16:20

Уже неделю голову ломаю, вроде всё так и всё на месте, но что-то не вижу, подскажите, пожалуйста, что не учёл

Само исключение:

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'File.service.AddressService' available

main:

public static void main(String[] args) {
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext("File.settings.ApplicationConfig.class");
    AddressService repositoryAddress =  applicationContext.getBean(AddressService.class);
    Address address = new Address();
    address.setId(13L);
    address.setCity("Lviv");
    address.setCountry("UKraine");
    address.setStreet("Shevchenka 42A");
    address.setPostCode("435433");
    repositoryAddress.save(address);

}

JavaConfig:

@Configuration
@EnableJpaRepositories("File.repository")
@EnableTransactionManagement
@ComponentScan("File")
@PropertySource("classpath:db.properties")
public class ApplicationConfig {
    @Resource
    private Environment env;
@Bean
public DataSource getDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(env.getRequiredProperty("db.driver"));
    dataSource.setUrl(env.getRequiredProperty("db.url"));
    dataSource.setUsername(env.getRequiredProperty("db.user_name"));
    dataSource.setPassword(env.getRequiredProperty("db.password"));
    return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean getEntityManager() {
    LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
   entityManagerFactoryBean.setDataSource(getDataSource());
   entityManagerFactoryBean.setPackagesToScan 
   (env.getRequiredProperty("db.entity.pages"));
   entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
   entityManagerFactoryBean.setJpaProperties(getProperties());
   return entityManagerFactoryBean;
}
@Bean
public JpaTransactionManager getJpaTransactionManager() {
 JpaTransactionManager transactionManager = new JpaTransactionManager();
 transactionManager.setEntityManagerFactory(getEntityManager().getObject());
 return transactionManager;
 }
 public Properties getProperties() {
     Properties properties = new Properties();
     InputStream inp = getClass().getClassLoader().getResourceAsStream("hibernate.properties");
     try {
         properties.load(inp);
     } catch (IOException e) {
         System.out.println("Can't find hibernate.propertis in classpath!" + e);
     }
     return properties;
 }

}

Настройки dataSource:

db.driver = com.mysql.cj.jdbc.Driver
db.url = jdbc:mysql://localhost:3306/public?useLegacyDatetimeCode=false&serverTimezone=UTC
db.user_name = root
db.password = 1111
db.entity.pages = File.Entity

Настройки Hibernate:

hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql = true
hibernate.hbm2ddl.auto = update

JpaRepository:

public interface RepositoryAddress extends JpaRepository<Address,Long> {
}

Service:

@Service
public class AddressService implements AddressDAO {
    @Autowired
    private RepositoryAddress repositoryAddress;
    @Override
    public void save(Address address) {
       repositoryAddress.saveAndFlush(address);
    }
   @Override
   public Address getById(Long id) {
       return repositoryAddress.findById(id).orElse(null);
   }
   @Override
   public List<Address> getAll() {
       return repositoryAddress.findAll();
   }
   @Override
   public void update(Address address) {
       repositoryAddress.saveAndFlush(address);
   }
   @Override
   public void deleteById(Long id) {
       repositoryAddress.deleteById(id);
   }
}

AddressDAO:

public interface AddressDAO {
    void save(Address address);
    Address getById(Long id);
    List<Address> getAll();
    void update(Address address);
    void deleteById(Long id);
}

READ ALSO
Перемещение isp файла за пределы папки web

Перемещение isp файла за пределы папки web

Начал осваивать сервлеты и столкнулся с таким вопросом Файлы jsp лежат в папке web Можно ли их вынести в папку src например? И стоит ли во вьюшку...

91
InputStreamReader ready() перед чтением неправильно возращает результат

InputStreamReader ready() перед чтением неправильно возращает результат

Когда программа ещё не читала из потока, метод ready() вернёт false, хотя на самом деле в потоке есть что читатьА если один раз прочитать, то дальше...

122
Составить regex для поиска одинаковых букв в начале и конце слова

Составить regex для поиска одинаковых букв в начале и конце слова

Напечатать без повторения слова текста, у которых первая и последняя буквы совпадаютНужно составить регулярное выражение

83
generic в kotlin

generic в kotlin

Хочу сделать клас более гибким при помощи generics в kotlinРанее использовал их только в java и в очень примитивных случаях

109