我創建了兩個獨立的Web應用程序以及一個Restful API服務器。
他們是maven項目在eclipse中籤出爲動態web項目分離彈簧3應用程序層到公共共享組件
我使用的一些依賴inlude Spring 3 MVC,Spring Security,Hibernate和JPA。
我的web應用程序和API都使用大量相同的域模型,DAO和服務在每個應用程序中。
他們都有自己的模型,道,服務indepdant副本。
結構:
***Consumer App:***
-Model<br/>
..User.java<br/>
..Card.java<br/>
..Purchase.java<br/>
-Dao<br/>
..UserDAO.java<br/>
..CardDAO.java<br/>
..PurchaseDAO.java<br/>
-Services<br/>
..UserService.java<br/>
..CardService.java<br/>
..PurchaseService.java<br/>
***Admin App:***
Same with few different models, dao's and services.
***API Server:***
Same with few different models, dao's and services.
用戶:
@Entity
public class User implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -5232533507244034448L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotEmpty
@Size(min=2, max=15)
private String firstname;
@NotEmpty
@Size(min=2, max=15)
private String surname;
@NotEmpty
@Email
private String email;
@NotEmpty
@Size(min=6, max=10)
private String password;
@OneToOne(mappedBy="user", cascade={CascadeType.ALL})
private UserRole userRole;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
private Set<Card> cards;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
private Set<UserOffer> offers;
@Temporal(TemporalType.TIMESTAMP)
private Date dob;
@NotEmpty
private String sex;
.......
}
UserDAO的:
@Repository
public class UserDAO extends AbstractJpaDAO<User> implements IUserDAO
{
@PersistenceContext
EntityManager entityManager;
public UserDAO()
{
setClazz(User.class);
}
public User findOneByEmail(String email)
{
return (User) entityManager
.createQuery("SELECT u FROM User u WHERE u.email = :email")
.setParameter("email", email).getSingleResult();
}
}
UserService:
@Service
public class UserService implements IUserService
{
@Autowired
private IUserDAO userDAO;
public UserService()
{
}
@Transactional
public List<User> getAll()
{
return userDAO.findAll();
}
@Transactional
public User getById(Long id)
{
return userDAO.findOne(id);
}
...
}
所以你可以看到,我需要刪除這些重複和有每種模式,DAO和服務,其中可能的一個副本。
從Web應用程序和API中移除我的模型,dao和服務並將它們放置在應該作爲jar包含的獨立項目/模塊中的最佳方法是?
有沒有人關於如何解決和實施這個建議?
有人在多個彈簧應用程序之間創建共享模塊經驗豐富的簡要概述會很好。