質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

1回答

5045閲覧

SpringSecurityのUserDetailsオブジェクトの拡張クラスとJdbcDaoImplクラスの拡張クラスについて

heavyuseman

総合スコア42

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2017/10/02 08:13

編集2022/01/12 10:55

いつもお世話になっております。
SpringSecurityのUserDetailsオブジェクトの拡張クラスとJdbcDaoImplクラスの拡張クラスについて質問があります。
上記のクラスを作成し、コンパイル実行したところ、下記のエラーが発生しました。
Newaccountクラスのコンストラクタ側の設定が間違っているのが原因だと思ったのですが、設定は正しいと考えております。
原因が不明ですのでご回答宜しくお願い致します。

エラーログ 2017-10-02 16:16:16.719 WARN 1207 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException 2017-10-02 16:16:16.725 WARN 1207 --- [ main] o.s.boot.SpringApplication : Error handling failed (Error creating bean with name 'delegatingApplicationListener' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available) 2017-10-02 16:16:16.744 ERROR 1207 --- [ main] o.s.boot.SpringApplication : Application startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.6.RELEASE.jar:4.3.6.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.1.RELEASE.jar:1.5.1.RELEASE] at com.tuyano.springboot.TestApiApplication.main(TestApiApplication.java:13) [bin/:na] Caused by: java.lang.NullPointerException: null at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57) ~[na:1.8.0_91] at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:75) ~[na:1.8.0_91] at java.lang.reflect.Field.set(Field.java:764) ~[na:1.8.0_91]

java

1//UserDetailsオブジェクトの拡張クラス 2//Newaccount.java 3package com.tuyano.springboot.dateaccess; 4 5import java.util.Collection; 6 7import org.springframework.security.core.GrantedAuthority; 8import org.springframework.security.core.userdetails.User; 9 10 11import javax.persistence.Column; 12import javax.persistence.Entity; 13import javax.persistence.GeneratedValue; 14import javax.persistence.Id; 15 16 17@Entity 18public class Newaccount extends User{ 19 20 @Id 21 @GeneratedValueの意味 22 private Integer ID; 23// 24 @Column 25 private String username; 26// @Column// 27 private String password; 28// @Column// 29 private String address; 30// // setter & getter --------------------- 31 public Integer getID() { 32 return ID; 33 } 34 public String getUserName(){ 35 return username; 36 } 37 public String getPassword(){ 38 return password; 39 } 40 public String getAddress(){ 41 return address; 42 } 43// 44 public void setEmpID(Integer ID) { 45 this.ID = ID; 46 } 47// 48 public void setUserName(String username) { 49 this.username = username; 50 } 51// 52 public void setPassword(String password) { 53 this.password = password; 54 } 55// 56 public void setAddress(String address) { 57 this.address = address; 58 } 59 60 61 62 // constructor -------------------------- 63 //引数String name,String password,authorities渡す 64 public Newaccount(String username,String password, 65 Collection<? extends GrantedAuthority>authorities){ 66 super(username,password,authorities); 67 } 68 //引数Integer ID,String name,int password,String address渡す 69 // public Newaccount(Integer ID, String name,int password,String address){ 70 // super(); 71 // this.ID =ID; 72 // this.name = name; 73 // this.password = password; 74 // this.address = address; 75 //} 76 77} 78

java

1//SampleJdbcDaoImpl.java 2//JdbcDaoImpplクラスの拡張クラス 3package com.tuyano.springboot.dateaccess; 4import org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl; 5import java.util.List; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9 10 11import org.springframework.jdbc.core.RowMapper; 12import org.springframework.security.core.GrantedAuthority; 13import org.springframework.security.core.authority.AuthorityUtils; 14import org.springframework.security.core.userdetails.UserDetails; 15 16public class SampleJdbcDaoImpl extends JdbcDaoImpl { 17 @Override 18 protected List<UserDetails> loadUsersByUsername(String username) { 19 return getJdbcTemplate().query(getUsersByUsernameQuery(), 20 new String[] { username }, new RowMapper<UserDetails>() { 21 public UserDetails mapRow(ResultSet rs, int rowNum) 22 throws SQLException { 23 String username = rs.getString("USERNAME"); 24 String loginId = rs.getString("LOGIN_ID"); 25 String password = rs.getString("PASSWORD"); 26 Newaccount user =new Newaccount(username,password,AuthorityUtils.NO_AUTHORITIES); 27 user.setUserName(username); 28 user.setPassword(password); 29 30 return user; 31} 32}); 33 } 34 35 @Override 36 protected UserDetails createUserDetails(String username, UserDetails userFromUserQuery, 37 List<GrantedAuthority> combinedAuthorities) { 38 Newaccount origin =(Newaccount) userFromUserQuery; 39 String loginId = origin.getUserName(); 40 String password = origin.getPassword(); 41 Newaccount user =new Newaccount(loginId,password,combinedAuthorities); 42 user.setUserName(username); 43 user.setPassword(password); 44 45 return user; 46 } 47}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/10/14 01:02

entityManagerFactory の生成に失敗しているから JPAに関連する設定が必須かな
guest

回答1

0

org.springframework.security.core.userdetails.Userを継承していることが原因だと思います。

JPAを使う場合このUserを継承することはできません。
代わりにorg.springframework.security.core.userdetails.UserDetailsを実装すれば
とりあえずは先に進めると思います。

java

1@Entity 2public class Newaccount extends User { 3 // ... 4}

java

1@Entity 2public class Newaccount implements UserDetails { 3 // ... 4}

あとJPAは引数なしのコンストラクタの定義は必須なのでそこも修正する必要があると思われます。

投稿2017/10/17 03:21

YukiYoshida

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問