Printemps de Démarrage : requis un bean nommé "entityManagerFactory" qui n'a pas pu être trouvé
Erreur:
Description:
Champ userRepository dans nashtech.tiennguyenm3.config.DataSeedingListener requis un bean de type " nashtech.tiennguyenm3.dao.IUserRepository " qui n'a pas pu être trouvé.
Action:
Envisager de définir un bean de type " nashtech.tiennguyenm3.dao.IUserRepository " dans votre configuration.
Code:
package nashtech.tiennguyenm3.musicstore;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages={"nashtech.tiennguyenm3"})
public class MusicStoreApplication {
public static void main(String[] args) {
SpringApplication.run(MusicStoreApplication.class, args);
}
}
DataSeedingListener.java
package nashtech.tiennguyenm3.config;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import nashtech.tiennguyenm3.dao.IRoleRepository;
import nashtech.tiennguyenm3.dao.IUserRepository;
import nashtech.tiennguyenm3.model.Role;
import nashtech.tiennguyenm3.model.User;
@Component
public class DataSeedingListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private IUserRepository userRepository;
@Autowired
private IRoleRepository roleRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
//Roles
if (roleRepository.findByName("ROLE_ADMIN") == null) {
roleRepository.save(new Role("ROLE_ADMIN"));
}
if (roleRepository.findByName("ROLE_MEMBER") == null) {
roleRepository.save(new Role("ROLE_MEMBER"));
}
//Admin account
if (userRepository.findByEmail("[email protected]") == null) {
User admin = new User();
admin.setEmail("[email protected]");
admin.setPassword(passwordEncoder.encode("123456"));
HashSet<Role> roles = new HashSet<>();
roles.add(roleRepository.findByName("ROLE_ADMIN"));
roles.add(roleRepository.findByName("ROLE_MEMBER"));
admin.setRoles(roles);
userRepository.save(admin);
}
//Member account
if (userRepository.findByEmail("[email protected]") == null) {
User user = new User();
user.setEmail("[email protected]");
user.setPassword(passwordEncoder.encode("123456"));
HashSet<Role> roles = new HashSet<>();
roles.add(roleRepository.findByName("ROLE_MEMBER"));
user.setRoles(roles);
userRepository.save(user);
}
}
}
IUserReponsitory.java
package nashtech.tiennguyenm3.dao;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import nashtech.tiennguyenm3.model.User;
@Repository
public interface IUserRepository extends CrudRepository<User, Integer> {
public User findByEmail(String email);
}
application.propriétés
# ===============================
# DATASOURCE
# ===============================
# Set here configurations for the database connection
# Connection url for the database "mycontact"
spring.datasource.url=jdbc:mysql://localhost:8181/db_musicstore
# MySQL username and password
spring.datasource.username=root
spring.datasource.password=
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.dbcp.test-while-idle=true
spring.datasource.dbcp.validation-query=SELECT 1
# ===============================
# JPA / HIBERNATE
# ===============================
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager).
# Show or not log for each sql query
spring.jpa.show-sql=true
# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto=update
# Naming strategy
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
security.basic.enabled=false
Quand j'ajoute (scanBasePackages={"nashtech.tiennguyenm3"}) après @SpringBootApplication, cette erreur se produit.
- Avez-vous votre connexion de base de données configurée dans
application.properties
(ouapplication.yml
)? - J'ai ajouté de l'application.propriétés dans le post
- Pourquoi avez-vous exclure des classes de configuration automatique?
- Désolé,je ne comprends pas! Où ai-je exclure les classes de configuration automatique?
- Dans EnableAutoConfiguration annotation
- Je l'ai supprimé et j'ai eu une nouvelle erreur! J'ai édité le post. Pouvez-vous m'aider? merci
- Ce message d'erreur est maintenant présentes?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'annoter votre classe d'application avec
@EnableJpaRepositories
afin d'avoir la@Repository
bean créé.nashtech.tiennguyenm3.dao.IRoleRepository
également être activé?basePackageClasses
est juste un type-safe alternative àbasePackages
Si tous vos dépôts/daos sont sous le package
nashtech.tiennguyenm3.dao
puis vous pouvez ajouter:
Si ils sont dans différents paquets, alors vous pouvez ajouter ceci: