我试图构建一个基于wicket、Spring jpa存储库和MySQL的应用程序。
问题是,我的Service类只是不想自动配线。如果我想使用自动配线的类,我有一个空指针异常。
事实上,我得到了双空指针:我的BaseServiceConfig。java不会自动连接实现,itnerface中的自动连接存储库也为空。所以,问题是为什么。
public final class ArmyBuilderPanel extends Panel {
@Autowired
DiskService diskService; //--> frist null, before setting it.
public ArmyBuilderPanel(String id) {
super(id);
add(new Label("armyPanel", "Content placeholder: Army builder panel"));
diskService = new DiskServiceImpl();
diskService.save(new Disk()); //--> second nullpointer
} }
我试图用最少甚至没有xml的方式实现这一点,所有的配置都是在java类中完成的。让我给你看看代码:
仓库接口:
@Transactional
public interface DiskRepository extends JpaRepository<Disk, Long> {
}
服务界面:
public interface DiskService {
public Disk save(Disk entity);
}
服务实施:
@Service
public class DiskServiceImpl implements DiskService {
@Autowired
DiskRepository diskRepo;
@Override
public Disk save(Disk entity) {
return diskRepo.save(entity);
}
}
BaseServiceConfig。JAVA
@Configuration
@EnableJpaRepositories(basePackages = {"hu.diskwars"})
public class BaseServiceConfig {
@Bean
DiskService diskService() {
return new DiskServiceImpl();
}
}
坚持。JAVA
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"hu.diskwars"}) public class
PersistenceJPAConfig implements DisposableBean {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[]{"hu.diskwars"});
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/whdiskwars_db");
dataSource.setUsername("Westy");
dataSource.setPassword("pass");
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties additionalProperties() {
return new Properties() {
{ // Hibernate Specific:
setProperty("hibernate.hbm2ddl.auto", "create-drop");
setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
}
};
}
@Override
public void destroy() throws Exception {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
} }
BaseServiceConfig。java(自动连接实现)
@Configuration @EnableJpaRepositories(basePackages = {"hu.diskwars"})
public class BaseServiceConfig {
@Bean
DiskService diskService() {
return new DiskServiceImpl();
}
}
网状物xml
> <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
>
> <display-name>diskwars</display-name>
> <context-param>
> <param-name>contextClass</param-name>
> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
> </context-param>
>
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>hu.diskwars.config</param-value> </context-param>
>
> <listener>
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
> </listener>
> <filter> <filter-name>wicket.diskwars</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
> <init-param> <param-name>applicationClassName</param-name>
> <param-value>hu.diskwars.view.application.WicketApplication</param-value>
> </init-param> </filter>
>
> <filter-mapping> <filter-name>wicket.diskwars</filter-name>
> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
波姆。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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>hu.dwdb</groupId>
<artifactId>diskwars</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>diskwars</name>
<description></description>
<properties>
<wicket.version>6.13.0</wicket.version>
<jetty.version>7.6.13.v20130916</jetty.version>
<wtp.version>none</wtp.version>
<slf4j.version>1.6.1</slf4j.version>
<spring.version>3.2.2.RELEASE</spring.version>
<jpa.version>1.2.0.RELEASE</jpa.version>
<hibernate.version>4.2.0.Final</hibernate.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${jpa.version}</version>
<type>jar</type>
</dependency>
<!-- WICKET DEPENDENCIES -->
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>${wicket.version}</version>
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-extensions</artifactId>
<version>${wicket.version}</version>
</dependency>
<!-- LOGGING DEPENDENCIES - LOG4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- JUNIT DEPENDENCY FOR TESTING -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- JETTY DEPENDENCIES FOR TESTING -->
<dependency>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all-server</artifactId>
<version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
<!-- HIBERNATE DEPENDENCIES -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- MYSQL DRIVER -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>false</filtering>
<directory>src/main/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<filtering>false</filtering>
<directory>src/test/resources</directory>
</testResource>
<testResource>
<filtering>false</filtering>
<directory>src/test/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>3600000</maxIdleTime>
</connector>
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<maxIdleTime>3600000</maxIdleTime>
<keystore>${project.build.directory}/test-classes/keystore</keystore>
<password>wicket</password>
<keyPassword>wicket</keyPassword>
</connector>
</connectors>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<downloadSources>true</downloadSources>
<wtpversion>${wtp.version}</wtpversion>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>Apache Nexus</id>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
这是我工作空间的照片:
谢谢你的帮助!http://i.stack.imgur.com/P32oV.png
>
将SpringInjector添加到我的基本检票口应用程序
@覆盖公共空init(){super.getComponentInstantiationListeners(). add(new SpringComponentInjector(this));}
突然,一个全新的错误出现了,与我的持续单位联系在一起。
原因:org。springframework。豆。工厂BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[hu/diskwars/config/PersistenceJPAConfig.class]中定义:调用init方法失败;嵌套的例外是java。lang.IllegalStateException:名称“diskwarsPU”的持久化单元定义冲突:文件:/D:/Development/projects/diskwars/target/diskwars-1.0-SNAPSHOT/WEB-INF/classes/,文件:/D:/Development/projects/diskwars/target/diskwars-1.0-SNAPSHOT/WEB-INF/classes/
主要的问题是,我甚至没有毅力。xml文件。我曾经(与“diskwarsPU”同名),但当我知道我可以不用它进行所有配置时,我就把它扔掉了。我清理了,重新构建了项目,甚至删除了目标文件夹,没有用。
Wicket对Spring@Autowired annotation一无所知。使用Wicket@SpringBean注释和SringComponentInjector将Sringbean注入Wicket组件。
关于如何使用@SpringBean注释的完整示例存在疑问:如何在自定义Wicket模型类中注入SpringBean?
Repository,仓库,简称 Repo。为项目添加一个 Git 仓库以后,你就可以用 Git 为项目做版本控制了。 git init 上面的命令可以为项目初始化一个仓库,这个动作只需要执行一次,它会在项目下面创建一个 .git 目录,Git 会把它需要的东西存储在这个 .git 目录里面,它其实就是项目的仓库。 练习 1,创建一个项目。打开你的命令行界面,执行: cd ~/desktop m
仓库(Repository),这里指的是可以使用包管理工具安装的软件包的列表。系统自带一些仓库,如果你发现要安装的包在这些仓库里不存在,你可能需要在系统上安装额外的仓库。 仓库列表 先查看一下安装在系统上的仓库列表,执行: yum repolist 返回类似的东西: repo id repo name
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。 一个 Docker Registry 中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的
本文向大家介绍详解Maven仓库之本地仓库、远程仓库,包括了详解Maven仓库之本地仓库、远程仓库的使用技巧和注意事项,需要的朋友参考一下 什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。 每建立一个项目,你都需要建立这样的一个/lib目
主要内容:仓库的分类,本地仓库,中央仓库,远程仓库,Maven 依赖搜索顺序在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称为构件。 Maven 在某个统一的位置存储所有项目的构件,这个统一的位置,我们就称之为仓库。换言之,仓库就是存放依赖和插件的地方。 任何的构件都有唯一的坐标,该坐标定义了构件在仓库中的唯一存储路径。当 Maven 项目需要某些构件时,只要其 POM 文件中声明了这些构件的坐标,Maven 就会根据这些坐标找自动到仓库中找到并使用它们
用于对接发布虚拟机或容器应用的Helm仓库。 Helm仓库用于存储虚拟机和容器应用等。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “运维工具/编排/Helm仓库” 菜单项,进入Helm仓库页面。 新建Helm仓库 该功能用于对接Helm仓库。 说明 推荐使用的Helm仓库的URL: 虚拟机Helm仓库:https://cloudpods-charts.oss-cn-hongko