Как решить Не удалось автоматически настроить источник данных: 'spring.datasource.url' не указан, и встроенный источник данных не может быть настроен автоматически - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь запустить SpringBootApplication в EC2, я разместил MySQL в RDS. Пока я пытался в своей локальной базе данных, она работала нормально, но как только я перешел на Rds, приложение выдает мне ошибку

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to auto-configure a DataSource: 'spring.datasource.url' is not 
specified and no embedded datasource could be auto-configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

Я гуглил и пытался добавить какую-то конфигурацию в приложение, но у меня это не работает

Здесь я публикую класс, о котором упоминает приложение

AppUserDAO

@Repository
@Transactional
public class AppUserDAO {


@Autowired
private EntityManager entityManager;

public AppUser findUserAccount(String userName) {
    try {
        String sql = "Select e from " + AppUser.class.getName() + " e " //
                + " Where e.userName = :userName ";

        Query query = entityManager.createQuery(sql, AppUser.class);
        query.setParameter("userName", userName);

        return (AppUser) query.getSingleResult();
    } catch (NoResultException e) {
        return null;
    }
   }
  }

AppRoleDAO

@Repository
@Transactional
public class AppRoleDAO {

@Autowired
private EntityManager entityManager;

public List<String> getRoleNames(Long userId) {
    String sql = "Select ur.appRole.roleName from " + UserRole.class.getName() + " ur " //
            + " where ur.appUser.userId = :userId ";

    Query query = this.entityManager.createQuery(sql, String.class);
    query.setParameter("userId", userId);
    return query.getResultList();
    }
 }

UserDetailsServiceImpl

 @Service
 public class UserDetailsServiceImpl implements UserDetailsService {

@Autowired
private AppUserDAO appUserDAO;


@Autowired
private AppRoleDAO appRoleDAO;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

    AppUser appUser=this.appUserDAO.findUserAccount(username);
    if(appUser==null) {
        System.out.println("User not  found! "+username);
        throw new UsernameNotFoundException("User "+username+" was not found in the database");
    }
    System.out.println("Found User :"+appUser);

    List<String> roleNames=this.appRoleDAO.getRoleNames(appUser.getUserId());
    List<GrantedAuthority> grantList = new ArrayList<GrantedAuthority>();

    if(roleNames!=null) {
        for(String role:roleNames){
            GrantedAuthority authority = new SimpleGrantedAuthority(role);
            grantList.add(authority);
        }
    }
    UserDetails userDetails=(UserDetails)new User(appUser.getUserName(),appUser.getEncrytedPassword(),grantList);
    return userDetails;
   }

}

Application.properties

 ==============================
# DATABASE
# ===============================


  spring.datasource.url=jdbc:mysql://myrdsinstance.ciswboatdreq.us-east-1.rds.amazonaws.com/rdsTest

pom.xml

      <project xmlns="http://maven.apache.org/POM/4.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
      http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.o7planning</groupId>
      <artifactId>SpringBootSecurityJPA</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>

      <name>SpringBootSecurityJPA</name>
      <description>Spring Boot +Spring Security + JPA + Remember 
      Me</description>

      <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.RELEASE</version>
      <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
           <mainClass>org.o7planning.sbsecurity.SpringBootSecurityJpaApplication</mainClass>
            </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
        </plugin>
    </plugins>
</build>

Пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Попробуйте это ...

@PersistenceContext
private EntityManager entityManager;

РЕДАКТИРОВАТЬ

После правок в вопросе

Не удалось автоматически настроить источник данных: 'spring.datasource.url 'не указан, и ни один встроенный источник данных не может быть автоматически настроен.

Причина: не удалось определить подходящий класс драйвера

Вы должны упомянуть драйвер mysql в application.properties

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

(or)

spring.datasource.driverClassName=com.mysql.jdbc.Driver
0 голосов
/ 05 июня 2019

Попробуйте внедрить EntityManager зависимость по конструктору в ваших DAO, а не в поле.Более того, вы также можете инициализировать ваш bean-компонент в основном классе приложения Spring Boot, выполнив что-то вроде этого:

@Bean
public EntityManager entityManager() {
      return new EntityManager();
}
...