niedziela, 23 kwietnia 2017

Jak użyć bazy danych w Springu

Nie mam wprawdzie niestety obiecanego "Remember me", ale jakieś tam malutkie postępy są.
Mój projekt już "gada" z bazą danych. Yay, teraz zacznie się prawdziwe programowanie. ;)
Aby podłączyć bazę, na pewno będziemy potrzebować drivera MySQL i Spring JDBC. Ponieważ używam Mavena, wystarczy tylko dopisać kilka linii w pliku pom.xml i przebudować projekt:


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.39</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>4.3.8.RELEASE</version>
</dependency>

Dodajemy plik z konfiguracją bazy - db-bean.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
<bean id="dataSource"
 class="org.springframework.jdbc.datasource.DriverManagerDataSource">

 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
 <property name="url" value="jdbc:mysql://localhost:3306/iwilldo_db" />
 <property name="username" value="root" />
 <property name="password" value="asdf1" />
</bean>

<!-- If request parameter "targetUrl" is existed, then forward to this url -->
<!-- For update login form -->
<bean id="savedRequestAwareAuthenticationSuccessHandler" 
    class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
    
 <property name="targetUrlParameter" value="targetUrl" />
</bean>

</beans>

Aby Spring go "widział", musimy go jeszcze wskazać w pliku web.xml:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring-security.xml,
            /WEB-INF/db-bean.xml
        </param-value>
</context-param>


W spring-security.xml podmieniamy authentication-providera z zakodowanym na sztywno użytkownikiem i hasłem na poniższy:

<authentication-provider>
 <jdbc-user-service data-source-ref="dataSource"
  users-by-username-query="SELECT usr_login, usr_pass, 1 FROM users WHERE usr_login=?"
  authorities-by-username-query="SELECT usr_login, 'ROLE_USER' FROM users WHERE usr_login=?" />
</authentication-provider>

Ostatnia rzecz, której potrzebujemy, to użytkownik w bazie. Ponieważ formularz rejestracji jest jeszcze w powijakach, dodałam ręcznie testowego użytkownika.

insert into users (usr_first_name, usr_last_name, usr_login, usr_pass, usr_status)
values ('test', 'test', 'test@test.qa', 'test', 'A');
commit;

To tyle na dziś. Niewiele... ale grunt, że pomalutku do przodu. :)

Brak komentarzy:

Prześlij komentarz