问题描述
Spring Boot不适用于Google App Engine(至少不适用于我)。
然而,大部分在 GitHub 或其他存储库使用的是Spring Boot,Spring-Data-JPA有没有使用Spring Boot并像以前一样使用普通上下文XML的示例?
这会显示
- spring / context.xml(或servlet-context.xml)
<?xml version =1.0encoding =UTF-8?>
< beans xmlns =http://www.springframework.org/schema/beans
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexmlns :p =http://www.springframework.org/schema/p
xmlns:context =http://www.springframework.org/schema/contextxmlns:tx =http:// www.springframework.org/schema/tx
xmlns:jpa =http://www.springframework.org/schema/data/jpa
xsi:schemaLocation =http:// www。 springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework .org / schema / context / spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd\">
< context:property-placeholder location =/ WEB-INF / spring / jdbc.properties/>
< bean id =dataSourceclass =org.apache.commons.dbcp.BasicDataSource
p:driverClassName =$ {jdbc.driverClassName}p:url =$ {jdbc.url}
p:username =$ {jdbc.username}p:password =$ {jdbc.password}/>
< bean id =hibernateJpaVendorAdapter
class =org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter/>
< bean id =entityManagerFactory
class =org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean>
< property name =dataSourceref =dataSource/>
< property name =jpaVendorAdapterref =hibernateJpaVendorAdapter/>
< property name =jpaProperties>
<道具>
< prop key =hibernate.dialect> $ {hibernate.dialect}< / prop>
< /道具>
< / property>
< property name =packagesToScanvalue =com.demo.data/>
< / bean>
< bean id =transactionManagerclass =org.springframework.orm.jpa.JpaTransactionManager>
< property name =entityManagerFactoryref =entityManagerFactory/>
< / bean>
< tx:annotation-driven />
< jpa:repositories base-package =com.demo.data/>
< context:component-scan base-package =com.demo.svc/>
< / beans>
/src/main/webapp/WEB-INF/spring/jdbc.properties
#JDBC连接
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc。 url = jdbc:mysql:// host:3306 / db
jdbc.username = user
jdbc.password =密码
hibernate.dialect = org.hibernate.dialect.MySQLDialect
/src/main/webapp/WEB-INF/spring/servlet-context.xml
<?xml version =1.0encoding =UTF-8?>
< beans:beans xmlns =http://www.springframework.org/schema/mvc
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance xmlns:beans =http://www.springframework.org/schema/beans
xmlns:context =http://www.springframework.org/schema/context
xsi:schemaLocation =http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/豆类http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context /spring-context.xsd\">
< context:component-scan base-package =com.demo.web/>
< / beans:beans>
web.xml
<?xml version =1.0encoding =UTF-8?>
< web-app xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xmlns =http://java.sun.com/xml/ns / javaeexmlns:web =http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
xsi:schemaLocation =http://java.sun.com/xml / ns / javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
version =2.5>
< context-param>
< param-name> contextConfigLocation< / param-name>
< param-value> /WEB-INF/spring/context.xml< / param-value>
< / context-param>
< context-param>
< param-name> webAppRootKey< / param-name>
< param-value> demo_jpa< /参数值>
< / context-param>
< listener>
< listener-class> org.springframework.web.context.ContextLoaderListener< / listener-class>
< / listener>
< servlet>
< servlet-name> appServlet< / servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet< / servlet-class>
< init-param>
< param-name> contextConfigLocation< / param-name>
< param-value> /WEB-INF/spring/servlet-context.xml< / param-value>
< / init-param>
<加载启动> 1< /加载启动>
< / servlet>
< servlet-mapping>
< servlet-name> appServlet< / servlet-name>
< url-pattern> /< / url-pattern>
< / servlet-mapping>
< / web-app>
pom.xml
<属性>
< org.springframework-version> 4.1.7.RELEASE< /org.springframework-version>
< org.hibernate-em-version> 4.3.8.Final< /org.hibernate-em-version>
< org.springframework.data-version> 1.9.0.RELEASE< /org.springframework.data-version>
< dbcp-version> 1.4< / dbcp-version>
< mysql-connector-version> 5.1.28< / mysql-connector-version>
< project.build.sourceEncoding> UTF-8< /project.build.sourceEncoding>
< / properties>
<依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-context-support< / artifactId>
< version> $ {org.springframework-version}< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework< / groupId>
< artifactId> spring-webmvc< / artifactId>
< version> $ {org.springframework-version}< / version>
< /依赖关系>
< dependency>
< groupId> org.springframework.data< / groupId>
< artifactId> spring-data-jpa< / artifactId>
< version> $ {org.springframework.data-version}< / version>
< /依赖关系>
< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-entitymanager< / artifactId>
< version> $ {org.hibernate-em-version}< / version>
< /依赖关系>
< dependency>
< groupId> mysql< / groupId>
< artifactId> mysql-connector-java< / artifactId>
< version> $ {mysql-connector-version}< / version>
< /依赖关系>
< dependency>
< groupId> commons-dbcp< / groupId>
< artifactId> commons-dbcp< / artifactId>
< version> $ {dbcp-version}< / version>
< /依赖关系>
< /依赖关系>
数据实体:com.demo.data.User
package com.demo.data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
$ b $ @Entity
@Table(name =SYS_USERS)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name =USER_ID)
private int id;
@Column(name =USER_NAME)
私人字符串名称;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
Spring数据JPA存储库:com.demo .data.UserRepository
package com.demo.data;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository扩展CrudRepository< User,Integer> {
}
服务
接口:
package com.demo.svc;
import com.demo.data.User;
public interface UserService {
User findUserById(Integer id);
$ / code>
执行:
package com.demo.svc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.demo.data.User;
import com.demo.data.UserRepository;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserRepository userRepository;
$ b $ public User findUserById(Integer id){
return userRepository.findOne(id);
Web控制器:com.demo.web .UserController
package com.demo.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.demo.svc.UserService;
@Controller
public class UserController {
@Autowired
UserService svc;
@RequestMapping(/)
@ResponseBody
public String test(){
return svc.findUserById(1).getName();
}
}
Spring Boot doesn't work with Google App Engine (at least not for me).
However much of the examples written or available in the GitHub or other repositories are using Spring Boot, is there any example for Spring-Data-JPA that does not use Spring Boot and use plain context XML as before?
That will show
- spring/context.xml (or servlet-context.xml)
解决方案
Just created this example for you:
src/main/webapp/WEB-INF/spring/context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <context:property-placeholder location="/WEB-INF/spring/jdbc.properties" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}" /> <bean id="hibernateJpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> <!-- Configure the entity manager factory bean --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" /> <!-- Set JPA properties --> <property name="jpaProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> </props> </property> <property name="packagesToScan" value="com.demo.data" /> </bean> <!-- Configure the transaction manager bean --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <tx:annotation-driven /> <jpa:repositories base-package="com.demo.data" /> <context:component-scan base-package="com.demo.svc" /> </beans>
/src/main/webapp/WEB-INF/spring/jdbc.properties
# JDBC Connection jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://host:3306/db jdbc.username=user jdbc.password=password hibernate.dialect=org.hibernate.dialect.MySQLDialect
/src/main/webapp/WEB-INF/spring/servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.demo.web" /> </beans:beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/context.xml</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>demo_jpa</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
pom.xml
<properties> <org.springframework-version>4.1.7.RELEASE</org.springframework-version> <org.hibernate-em-version>4.3.8.Final</org.hibernate-em-version> <org.springframework.data-version>1.9.0.RELEASE</org.springframework.data-version> <dbcp-version>1.4</dbcp-version> <mysql-connector-version>5.1.28</mysql-connector-version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${org.springframework.data-version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${org.hibernate-em-version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-version}</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>${dbcp-version}</version> </dependency> </dependencies>
Data Entity: com.demo.data.User
package com.demo.data; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "SYS_USERS") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "USER_ID") private int id; @Column(name = "USER_NAME") private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Spring Data JPA Repository: com.demo.data.UserRepository
package com.demo.data; import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository<User, Integer> { }
Service
Interface:
package com.demo.svc; import com.demo.data.User; public interface UserService { User findUserById(Integer id); }
Implementation:
package com.demo.svc; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.demo.data.User; import com.demo.data.UserRepository; @Service public class UserServiceImpl implements UserService { @Autowired UserRepository userRepository; public User findUserById(Integer id) { return userRepository.findOne(id); } }
Web Controller: com.demo.web.UserController
package com.demo.web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.demo.svc.UserService; @Controller public class UserController { @Autowired UserService svc; @RequestMapping("/") @ResponseBody public String test() { return svc.findUserById(1).getName(); } }
这篇关于没有Spring Boot的Spring Data JPA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!