I added a JDBC token store and added the SQL from https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql (except the 1st and last tables). Then I fetched a token:
$ curl -u xxx:123456 http://localhost:8080/oauth/token -d grant_type=client_credentials -d client_id=xxx -d client_secret=123456 -d scope=write
{"access_token":"0cbd0733-2c37-400b-abd7-5d1507c2204f","token_type":"bearer","expires_in":42498,"scope":"write"}
The only table with a timestamp is oauth_approvals but it's empty!
MariaDB [xxxxxx]> select * from oauth_approvals;
Empty set (0.00 sec)
So how does Spring know when a token expires?
I restarted the server and verified the token still works and was the same token.