私はSpringとSpring socialが初めてです。既存のSpring Social Showcaseの例を変更して、データソースをローカルのMySQLデータベースを指すApache Basic Data Sourceに変更しようとしていました。ただし、環境クラスを autowire/inject して application.properties ファイルから jdbc URL を取得すると、常に null 値が返されます
AppConfig クラスは、環境インジェクションを追加したことを除いて、Spring Showcase GitHub の MainConfig と同じです。
@Configuration
@ComponentScan(basePackages = "org.springframework.social.showcase")
@PropertySource("classpath:org/springframework/social/showcase/config/application.properties")
@EnableTransactionManagement
public class AppConfig {
@Autowired
Environment environment;
@Bean(destroyMethod = "shutdown")
public DataSource dataSource() {
environment.getProperty("jdbc.url");
....
application.properties には「jdbc.url」という名前のプロパティが含まれていると確信しています。spring アプリケーションの起動時に null ポインター例外が発生しました。以下はスタックトレースです。
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.social.showcase.config.AppConfig.dataSource()] threw exception; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:570)
... 60 more
Caused by: java.lang.NullPointerException
at org.springframework.social.showcase.config.AppConfig.dataSource(AppConfig.java:55)
at org.springframework.social.showcase.config.AppConfig$$EnhancerByCGLIB$$a0d39c08.CGLIB$dataSource$0(<generated>)
at org.springframework.social.showcase.config.AppConfig$$EnhancerByCGLIB$$a0d39c08$$FastClassByCGLIB$$3d304ff8.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:286)
at org.springframework.social.showcase.config.AppConfig$$EnhancerByCGLIB$$a0d39c08.dataSource(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:160)
... 61 more
Tomcat 7.0.40 を使用しています。Spring フレームワークのバージョンは、Spring Social Showcase と同じ 3.2.2.release です。この問題を解決するためにさらに情報が必要な場合はお知らせください。どうもありがとう!!
次のステップでは、春のソーシャル ショーケースの例に JPA サポートを追加します。これは、春のデータ JPA が JPA リポジトリのような多くの優れた機能を提供するためです。誰かが私にこれについてのガイダンスを与えることができれば、私は本当に感謝しています.
私はすでにこの質問をhttp://forum.springsource.org/showthread.php?139141-Autowire-Environment-interface-to-spring-social-showcase-example-always-return-NULL に投稿しました!! 詳細が必要な場合は、そこを参照してください。
ありがとう!