2017-01-16 3 views
-2

Настройка проекта с использованием ДЖЕРСИ 2,25, SPRING 4.3.5 RELEASE, Hibernate 5.5.6 Окончательная, Maven и Java 8Как я настроить проект с использованием Джерси, Spring, Hibernate и Maven

+0

Пожалуйста, измените это в формате вопрос/ответ –

+0

я должен был столкнуться много проблем, чтобы найти такие решение. поэтому я подумал о том, чтобы обеспечить решение в одном месте, чтобы другие могли извлечь выгоду из этого, и не нужно тянуть их голову вокруг. –

+0

Да, это здорово. Но он должен быть в формате Q & A. Отправьте фактический вопрос. Затем опубликуйте свое решение в качестве ответа ниже. Вопросы с автоответчиком очень приветствуются, если они находятся в правильном формате Q & A –

ответ

1

Проект основан на ДЖЕРСИ 2,25, SPRING 4.3.5 RELEASE, Hibernate 5.5.6 Final, с использованием Maven

Я думал о делиться своими знаниями о создании базовой настройки, чтобы дать пинок начать свой проект. Я размещаю этот запрос, потому что я не смог найти полное решение для настройки и конфигурации JERSEY-SPRING-HIBERNATE. Поскольку я много искал проблему, чтобы найти решение. Вы также можете обратиться к моему проекту Github Jersey-Spring-Hibernate-Project .


Чтобы запустить проект с открытой Eclipse IDE.

File -> New -> Other -> Maven -> Maven Project -> нажмите Далее -> нажмите Next

в фильтре, искать -Джерси быстрого старта-веб-приложение с версии 2.24 или более поздней версии.

, если вы не можете найти его, а затем нажмите кнопку Добавить Архетип

Архетип Идентификатор группы: org.glassfish.jersey.archetypes

Архетип Артефакт ID: джерси-Quickstart-WebApp

Архетип Версия: 2,24

URL-адрес репозитория: оставьте его пустым

Нажмите OK.

Теперь снова выполните шаги от начала и теперь вы найдете jersey-quickstart-webapp с версией 2.24.

выберите его и нажмите NEXT.

Предоставьте Group ID: "который будет ваше имя пакета", в моем случае это org.pramod.

предоставить свой артефакта ID: "Это ваше имя проекта"

Пакет: в этом проекте org.pramod

нажмите Finish


Для для настройки нашего проекта нам нужно 4 файла для настройки.

  1. web.xml
  2. pom.xml
  3. applicationContext.xml
  4. MyApplication.java

Имя файла: SRC/главная/веб-приложение/WEB-INF /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" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 

    <!-- REGISTERING LISTNER --> 
    <listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
    </listener> 

    <!-- TO REGISTER THE BEANS --> 
    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:applicationContext.xml</param-value> 
    </context-param> 

    <servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
<!-- TO REGISTER THE SERVLET which is mentioned in the MyApplication --> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>org.pramod.config.MyApplication</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/webapi/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

Имя файла: SRC/основные/ресурсы/applicationContext.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:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:mysql://localhost:3306/jerseyspringhibernate"/> 
     <property name="username" value="root"/> 
     <property name="password" value="root"/> 
    </bean> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
       <prop key="hibernate.hbm2ddl.auto">update</prop> 
       <prop key="hibernate.show_sql">true</prop> 
      </props> 
     </property> 
     <property name="annotatedClasses"> 
      <list> 
       <value>org.pramod.model.Customer</value> 
      </list> 
     </property> 
    </bean> 

    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 
    <bean id="customerService" class="org.pramod.service.CustomerServiceImpl"/> 
    <bean id="customerDao" class="org.pramod.dao.CustomerDaoImpl"/> 

</beans> 

Имя файла: pom.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>org.pramod</groupId> 
    <artifactId>JerseySpringHibernate</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>JerseySpringHibernate</name> 

    <build> 
    <finalName>JerseySpringHibernate</finalName> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 

    <dependencyManagement> 
     <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     </dependency> 

     <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
     </dependency> 

     <dependency> 
     <groupId>org.glassfish.jersey.ext</groupId> 
     <artifactId>jersey-spring3</artifactId> 
     </dependency> 
<!--   
     <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.2</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>javax.servlet</artifactId> 
       <groupId>servlet-api</groupId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
-->  
<!-- ******************************************************** -->  
     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
     </dependency> 

<!-- ********************** SPRING 4.3.4 ***************************** --> 

     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId> 
     <version>${spring.version}</version> 
     </dependency>  
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${spring.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-expression</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-instrument</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-instrument-tomcat</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jms</artifactId> 
     <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-messaging</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-oxm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</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-webmvc-portlet</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-websocket</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

<!-- ********************* HIBERNATE 5.5.6 ************************* --> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-search-orm</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

<!-- ********************* MY SQL CONNECTOR ************************* --> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.38</version> 
     </dependency> 

    </dependencies> 

    <properties>  
     <jersey.version>2.25</jersey.version> 
     <spring.version>4.3.5.RELEASE</spring.version> 
     <hibernate.version>5.5.6.Final</hibernate.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 

Ниже упомянутые Файлы - все java-файлы, которые помещаются в src/main/java/, за которым следует имя пакета. Название пакета: org.pramod. . Пример SRC/Основной/Java/org.pramod *

Имя файла: org.pramod.config.MyApplication.java

package org.pramod.config; 

import org.glassfish.jersey.server.ResourceConfig; 

public class MyApplication extends ResourceConfig{ 

    public MyApplication(){ 
     register(MyResource.class); 
     register(CustomerResource.class); 
    } 
} 

ЭТИ сервлет РЕСУРС. 1. MyResource и 2. CustomerResource могут быть перемещены в пакет org.pramod.resource

Имя файла: org.pramod.config.MyResource.java

package org.pramod.config; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import org.pramod.service.CustomerService; 
import org.springframework.beans.factory.annotation.Autowired; 

/** 
* Root resource (exposed at "myresource" path) 
*/ 
@Path("myresource") 
public class MyResource { 

    @Autowired 
    CustomerService customerService; 


    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getIt() { 
     return customerService.getStringTest(); 
    } 
} 

Имя

файла: org.pramod.config.CustomerResource.java

package org.pramod.config; 

import java.util.List; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.DELETE; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.PUT; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import org.pramod.model.Customer; 
import org.pramod.service.CustomerService; 
import org.springframework.beans.factory.annotation.Autowired; 

@Path("customers") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public class CustomerResource { 

    @Autowired 
    CustomerService customerService; 

    @GET 
    public List<Customer> getCustomers(){ 
    return customerService.getAllCustomer(); 
    } 

    @GET 
    @Path("/{customerId}") 
    public Customer getCustomer(@PathParam("customerId") int id){ 
    return customerService.getCustomerById(id); 
    } 

    @POST 
    public Customer saveCustomer(Customer customer){ 
    return customerService.addCustomer(customer); 
    } 

    @PUT 
    @Path("/{customerId}") 
    public Customer updateCustomer(@PathParam("customerId") int id, Customer customer){ 
    return customerService.updateCustomer(id, customer); 
    } 

    @DELETE 
    @Path("/{customerId}") 
    public Customer removeCustomer(@PathParam ("customerId") int id){ 
    return customerService.deleteCustomer(id); 
    } 
} 

ЭТИ ПАСПОРТНЫЕ СРЕДНИЕ файлы и интерфейс. 1. CustomerService и 2. CustomerServiceImpl

Имя файла: org.pramod.service.CustomerService.java

package org.pramod.service; 

import java.util.List; 

import org.pramod.model.Customer; 

public interface CustomerService { 

    String getStringTest(); 
    Customer addCustomer(Customer customer); 
    Customer updateCustomer(int id, Customer customer); 
    Customer deleteCustomer(int id); 
    Customer getCustomerById(int id); 
    List<Customer> getAllCustomer(); 
} 

Имя файла: org.pramod.service.CustomerServiceImpl.Java

package org.pramod.service; 

import java.util.List; 

import org.pramod.dao.CustomerDao; 
import org.pramod.model.Customer; 
import org.springframework.beans.factory.annotation.Autowired; 

public class CustomerServiceImpl implements CustomerService { 

    @Autowired 
    private CustomerDao customerDao; 

    @Override 
    public String getStringTest() { 
    return customerDao.getStringTest(); 
    } 

    @Override 
    public Customer addCustomer(Customer customer) { 
    return customerDao.addCustomer(customer); 
    } 

    @Override 
    public Customer updateCustomer(int id, Customer customer) { 
    return customerDao.updateCustomer(id, customer); 
    } 

    @Override 
    public Customer deleteCustomer(int id) { 
    return customerDao.deleteCustomer(id); 
    } 

    @Override 
    public Customer getCustomerById(int id) { 
    return customerDao.getCustomerById(id); 
    } 

    @Override 
    public List<Customer> getAllCustomer() { 
    return customerDao.getAllCustomer(); 
    } 
} 

Они являются реализация Hibernate файлов и интерфейс.

1. CustomerDao и 2. CustomerDaoImpl.

Если вы не хотите, чтобы реализовать Hibernate, чем вы можете пропустить этот два файла и в файл applicationContext.xml УДАЛИТЬ боб с идентификаторами «DataSource» и «SessionFactory». Удалите зависимость зимуют в pom.xml


Имя файла: org.pramod.dao.CustomerDao.java

package org.pramod.dao; 

import java.util.List; 

import org.pramod.model.Customer; 

public interface CustomerDao { 

    String getStringTest(); 
    Customer addCustomer(Customer customer); 
    Customer updateCustomer(int id, Customer customer); 
    Customer deleteCustomer(int id); 
    Customer getCustomerById(int id); 
    List<Customer> getAllCustomer(); 

} 

Имя файла: org.pramod.dao .CustomerDaoImpl.java

package org.pramod.dao; 

import java.util.List; 

import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.pramod.model.Customer; 
import org.springframework.beans.factory.annotation.Autowired; 

public class CustomerDaoImpl implements CustomerDao { 

    @Autowired 
    SessionFactory sessionFactory; 

    @Override 
    public String getStringTest(){ 
    String save = "Got it"; 
    return save; 
    } 

    @Override 
    public Customer addCustomer(Customer customer) {  
    Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    try{ 
     session.save(customer); 
     tx.commit(); 
     return customer; 
    }catch(Exception e){ 
     tx.rollback(); 
     return null; 
    } 
    } 

    @Override 
    public Customer updateCustomer(int id, Customer cust) { 
    Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    try{ 
     Customer customer = cust; 
     customer.setId(id); 
     session.update(customer); 
     tx.commit(); 
     return customer; 
    }catch(Exception e){ 
     tx.rollback(); 
     return null; 
    } 
    } 

    @Override 
    public Customer deleteCustomer(int id) { 
    Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    try{ 
     Customer cust = session.get(Customer.class,id); 
     session.delete(cust); 
     tx.commit(); 
     return cust; 
    }catch(Exception e){ 
     tx.rollback(); 
     return null; 
    } 
    } 

    @Override 
    public Customer getCustomerById(int id) { 
    Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    try{ 
     Customer cust = session.get(Customer.class,id); 
     tx.commit(); 
     session.close(); 
     return cust; 
    }catch(Exception e){ 
     tx.rollback(); 
     session.close(); 
     return null; 
    }  
    } 

    @Override 
    public List<Customer> getAllCustomer() { 
    Session session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction(); 
    try{ 
     Query query = session.createQuery("from Customer"); 
     List<Customer> customers = query.list(); 
     tx.commit(); 
     session.close(); 
     return customers; 
    }catch(Exception e){ 
     tx.rollback(); 
     session.close(); 
     return null; 
    }  
    } 

} 

Это объект Entity или Object of Customer. Если вы не хотите использовать Hibernate. Удалить все аннотацию

Имя файла: org.pramod.model.Customer.java

package org.pramod.model; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="CUSTOMER") 
public class Customer { 

    @Id @GeneratedValue 
    @Column(name="customer_id") 
    private int id; 
    @Column 
    private String firstName; 
    @Column 
    private String lastName; 
    @Column 
    private String street; 
    @Column 
    private String city; 
    @Column 
    private String state; 
    @Column 
    private int pin; 

    public int getId() { 
    return id; 
    } 
    public void setId(int id) { 
    this.id = id; 
    } 
    public String getFirstName() { 
    return firstName; 
    } 
    public void setFirstName(String firstName) { 
    this.firstName = firstName; 
    } 
    public String getLastName() { 
    return lastName; 
    } 
    public void setLastName(String lastName) { 
    this.lastName = lastName; 
    } 
    public String getStreet() { 
    return street; 
    } 
    public void setStreet(String street) { 
    this.street = street; 
    } 
    public String getCity() { 
    return city; 
    } 
    public void setCity(String city) { 
    this.city = city; 
    } 
    public String getState() { 
    return state; 
    } 
    public void setState(String state) { 
    this.state = state; 
    } 
    public int getPin() { 
    return pin; 
    } 
    public void setPin(int pin) { 
    this.pin = pin; 
    } 
} 
Смежные вопросы