2010-02-10 24 views
111

Tôi đang cố gắng thực hiện dự án đầu tiên của mình với Spring 3.0 (và maven). Tôi đã sử dụng Spring 2.5 (và các phiên bản primer) trong một số dự án. Tuy nhiên tôi là kinda nhầm lẫn, những mô-đun tôi có để xác định là phụ thuộc trong pom.xml của tôi. Tôi chỉ muốn sử dụng các hàm chứa lõi (bean, core, context, el).Phụ thuộc nào của maven bao gồm cho mùa xuân 3.0?

tôi đã được sử dụng để làm điều này:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring</artifactId> 
    <version>2.5.6</version> 
</dependency> 

Nhưng bây giờ tôi đang kinda bối rối, vì không có mô-đun lò xo đóng gói đầy đủ cho phiên bản 3.0 nữa. Tôi đã thử những điều sau đây nhưng nó không hoạt động (một số lớp bị thiếu).

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-expression</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.0.0.RELEASE</version> 
    </dependency> 

Mọi trợ giúp sẽ được đánh giá cao!

+0

Nó thực sự hoạt động như được chỉ định trong ví dụ mã thứ hai. Tôi bị bối rối bởi một số vấn đề khác. Xin lỗi vì câu hỏi không cần thiết. Tôi sẽ khuyên bạn nên giữ cho câu hỏi anyways, gây ra có lẽ mọi người sẽ có cùng một vấn đề chuyển đổi từ 2,5 đến 3,0. –

Trả lời

218

Có một bài thật sự tốt đẹp trên Spring Blog từ Keith Donald chi tiết howto Obtain Spring 3 Aritfacts with Maven, với ý kiến ​​chi tiết khi bạn cần mỗi người trong số các phụ thuộc ...

<!-- Shared version number properties --> 
<properties> 
    <org.springframework.version>3.0.0.RELEASE</org.springframework.version> 
</properties> 
<!-- Core utilities used by other modules. 
    Define this if you use Spring Utility APIs 
    (org.springframework.core.*/org.springframework.util.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Expression Language (depends on spring-core) 
    Define this if you use Spring Expression APIs 
    (org.springframework.expression.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-expression</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Bean Factory and JavaBeans utilities (depends on spring-core) 
    Define this if you use Spring Bean APIs 
    (org.springframework.beans.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-beans</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Aspect Oriented Programming (AOP) Framework 
    (depends on spring-core, spring-beans) 
    Define this if you use Spring AOP APIs 
    (org.springframework.aop.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aop</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Application Context 
    (depends on spring-core, spring-expression, spring-aop, spring-beans) 
    This is the central artifact for Spring's Dependency Injection Container 
    and is generally always defined--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Various Application Context utilities, including EhCache, JavaMail, Quartz, 
    and Freemarker integration 
    Define this if you need any of these integrations--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Transaction Management Abstraction 
    (depends on spring-core, spring-beans, spring-aop, spring-context) 
    Define this if you use Spring Transactions or DAO Exception Hierarchy 
    (org.springframework.transaction.*/org.springframework.dao.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-tx</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- JDBC Data Access Library 
    (depends on spring-core, spring-beans, spring-context, spring-tx) 
    Define this if you use Spring's JdbcTemplate API 
    (org.springframework.jdbc.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-jdbc</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA and iBatis. 
    (depends on spring-core, spring-beans, spring-context, spring-tx) 
    Define this if you need ORM (org.springframework.orm.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB, JiBX, 
    Castor, XStream, and XML Beans. 
    (depends on spring-core, spring-beans, spring-context) 
    Define this if you need OXM (org.springframework.oxm.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-oxm</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Web application development utilities applicable to both Servlet and 
    Portlet Environments 
    (depends on spring-core, spring-beans, spring-context) 
    Define this if you use Spring MVC, or wish to use Struts, JSF, or another 
    web framework with Spring (org.springframework.web.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Spring MVC for Servlet Environments 
    (depends on spring-core, spring-beans, spring-context, spring-web) 
    Define this if you use Spring MVC with a Servlet Container such as 
    Apache Tomcat (org.springframework.web.servlet.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Spring MVC for Portlet Environments 
    (depends on spring-core, spring-beans, spring-context, spring-web) 
    Define this if you use Spring MVC with a Portlet Container 
    (org.springframework.web.portlet.*)--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc-portlet</artifactId> 
    <version>${org.springframework.version}</version> 
</dependency> 
<!-- Support for testing Spring applications with tools such as JUnit and TestNG 
    This artifact is generally always defined with a 'test' scope for the 
    integration testing framework and unit testing stubs--> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-test</artifactId> 
    <version>${org.springframework.version}</version> 
    <scope>test</scope> 
</dependency> 
+3

Cảm ơn, thực sự đã phải tìm kiếm nó một lần nữa, như tôi đã tìm thấy và mất liên kết một vài ngày trước .. Có nó ở đây có nghĩa là nó có thể dễ dàng hơn để tìm cho người dân hơn Blog mùa xuân .. – Tim

+0

Và cho Spring 4 [xem xét chuyển sang Spring Boot] (http://stackoverflow.com/a/30644556/53444) – Tim

1

Lớp nào bị thiếu? Tên lớp chính nó sẽ là một đầu mối tốt cho mô-đun bị thiếu.

FYI, tôi biết nó thực sự thuận tiện để bao gồm các bình uber mùa xuân nhưng điều này thực sự gây ra các vấn đề khi tích hợp với các dự án khác. Một trong những lợi ích đằng sau hệ thống phụ thuộc là nó sẽ giải quyết xung đột phiên bản giữa các phụ thuộc.

Nếu thư viện của tôi phụ thuộc vào lõi lò xo: ​​2.5 và bạn phụ thuộc vào thư viện của tôi và uber-spring: 3.0, bây giờ bạn có 2 phiên bản của spring trên classpath của bạn.

Bạn có thể giải quyết vấn đề này với các loại trừ nhưng dễ dàng hơn trong việc liệt kê chính xác các phụ thuộc và không phải lo lắng về điều đó.

2
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>3.0.0.RELEASE</version> 
</dependency> 
27

Spring (ngày nay) làm cho dễ dàng thêm Spring vào một dự án bằng cách chỉ sử dụng một phụ thuộc, ví dụ

<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-context</artifactId> 
<version>3.1.2.RELEASE</version> 
</dependency> 

này sẽ giải quyết để

[INFO] The following files have been resolved: 
[INFO] aopalliance:aopalliance:jar:1.0:compile 
[INFO] commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] org.springframework:spring-aop:jar:3.1.2.RELEASE:compile 
[INFO] org.springframework:spring-asm:jar:3.1.2.RELEASE:compile 
[INFO] org.springframework:spring-beans:jar:3.1.2.RELEASE:compile 
[INFO] org.springframework:spring-context:jar:3.1.2.RELEASE:compile 
[INFO] org.springframework:spring-core:jar:3.1.2.RELEASE:compile 
[INFO] org.springframework:spring-expression:jar:3.1.2.RELEASE:compile 

Có một cái nhìn tại trang Spring Framework documentation để biết thêm thông tin.

+0

Cách tiếp cận đó có thể có vấn đề nếu bạn có bảo mật mùa xuân trong dự án, bởi vì cách phụ thuộc Maven độ phân giải hoạt động (con đường ngắn nhất) - kiểm tra [Spring Security with Maven] của tôi (http://www.baeldung.com/spring-security-with-maven) Điều – Eugen

+1

@Eugen Điểm tốt. Trong trường hợp này, thậm chí sẽ tốt hơn chỉ để khai báo [các tạo phẩm bảo mật mùa xuân] (http://www.springsource.org/spring-security#documentation) để giải quyết các tạo tác "spring-core" được hỗ trợ với các phiên bản chính xác (unfortunaltly không phải là phiên bản ổn định mới nhất). – FrVaBe

0

Bạn có thể thử này

<dependencies> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.1.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.1.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.1.0.RELEASE</version> 
    </dependency> 
</dependencies>` 
2

Kể từ khi câu hỏi này dường như vẫn nhận được khá nhiều quan điểm, nó có thể là hữu ích để lưu ý rằng cho mùa xuân 4+ đó là dễ nhất để bắt đầu sử dụng Spring BootSpring Boot starter POMs.

Sử dụng khởi động mùa xuân có ít phụ thuộc hơn để quản lý (và do đó ít xung đột hơn) và thiết lập một bối cảnh Spring hoạt động tốt, tích hợp dễ dàng hơn rất nhiều. Tôi khuyên bạn nên nó.

Các vấn đề liên quan