是否有一种简单的方法可以将"服务层"与Web层分开部署,这样我就可以减少每周必须包装,打包,构建和部署整个WAR文件的次数?
我主要使用Tomcat,但我希望Java Web服务器更通用.
有很多问题需要最好的XML解析器,我更感兴趣的是什么是最像Groovy for Java的XML解析器?
我想要:
SomeApiDefinedObject o = parseXml( xml );
for( SomeApiDefinedObject it : o.getChildren() ) {
System.out.println( it.getAttributes() );
}
Run Code Online (Sandbox Code Playgroud)
最重要的是我不想为每种类型的XML节点创建一个类,我宁愿只将它们作为字符串处理,而构建XML不需要任何转换器或任何东西,只需要已经定义的简单对象
如果您使用过Groovy XML解析器,您将会知道我在说什么
或者,对我来说,只使用Java中的Groovy会更好吗?
MyObject myObject = repositoryHibernateImpl.getMyObjectFromDatabase();
//transaction is finished, and no, there is not an option to reopen it
ThirdPartyUtility.doStuffWithMyObjectType( myObject );
Run Code Online (Sandbox Code Playgroud)
此时你已经定义了什么是懒惰和急切加载,第三方实用程序将尝试调用你的"myObject"实例上的所有方法,这很好,因为你不想为懒惰返回任何东西加载属性,不幸的是它不返回null,它抛出一个LazyInitializationException.
发生这种情况是因为您实际上是在Hibernate的对象代理上调用该方法,并且它知道它没有获取该数据,并抛出异常.
甚至可以使用null值获取底层对象,以便getter只返回null,并且不会抛出异常?基本上分离对象,以便Hibernate完全不再了解它.延迟加载的对象的访问器必须返回null,它不能返回实际值,我们希望能够将实体转换为POJO,而不必创建看起来像实体的对象,并且必须重新映射所有值.
我已经阅读了所有Spring 3 Web文档:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/spring-web.html但是完全无法找到有关绑定更复杂的请求数据的任何有趣的文档,例如,假设我使用jQuery发布到控制器,如下所示:
$.ajax({
url: 'controllerMethod',
type: "POST",
data : {
people : [
{
name:"dave",
age:"15"
} ,
{
name:"pete",
age:"12"
} ,
{
name:"steve",
age:"24"
} ]
},
success: function(data) {
alert('done');
}
});
Run Code Online (Sandbox Code Playgroud)
我如何通过控制器接受?最好不必创建自定义对象,我宁愿只能使用简单的数据类型,但是如果我需要自定义对象来使事情变得更简单,那我也很好.
为了帮助您入门:
@RequestMapping("/controllerMethod", method=RequestMethod.POST)
public String doSomething() {
System.out.println( wantToSeeListOfPeople );
}
Run Code Online (Sandbox Code Playgroud)
不要担心这个问题的响应,我关心的是处理请求,我知道如何处理响应.
编辑:
我有更多示例代码,但我无法让它工作,我在这里缺少什么?
选择javascript:
var person = new Object();
person.name = "john smith";
person.age = 27;
var jsonPerson = JSON.stringify(person);
$.ajax({
url: "test/serialize",
type : "POST",
processData: false, …Run Code Online (Sandbox Code Playgroud) 我根本无法获得弹簧注释,我只是想让最简单的工作......
.../mycontext/something - >调用方法:
@RequestMapping(value = "/something")
@ResponseBody
public String helloWorld() {
System.out.println("hello world");
return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
我的主要问题是无论我怎么努力,我找不到所需的配置文件的完整SIMPLE示例,每个春季教程都充满了垃圾,我只是一个控制器来处理带有映射的请求而不能让它工作
有没有人知道一个简单而完整的春天例子.宠物诊所是不好的,它太复杂了,我有一个很小的基本用例,它被证明是一个真正的痛苦工作(这总是发生在春天)
如果你的控制器使用服务执行逻辑,而DAO可能会抛出不可恢复的异常,那么处理这些方法调用的最佳做法是什么?
目前我正在研究的应用程序有非常冗长的尝试捕获方法,只是错误的错误消息,这似乎不是非常强大,我认为这个代码闻起来,是否有任何cookie切割器最佳实践处理这个春天 - MVC?
我见过像这样编码的防御性副本
void someMethod(Date d) {
myDate = new Date( d.getTime() );
}
Run Code Online (Sandbox Code Playgroud)
但这对我来说没有意义,在Java中是否有办法在该对象的内存中创建相同的副本?
我已经读过clone()不会在所有情况下都行不通,但我不明白为什么.
我正在使用Spring 3和Hibernate 3.5,我没有让我的事务在测试环境中回滚,这让我担心它们也不会在生产中回滚.
测试类:
@ContextConfiguration(loader = MyConfigurationLoader.class)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class DashTemplateRepositoryTest extends AbstractMulitpleDataSourceSpringContextTests {
@Autowired
DashTemplateRepository dashTemplateRepository;
@Test
public void testSaveCategory() {
int initialCount = getCategoryCount();
Category c = new Category();
c.setName("mynewcategory");
dashTemplateRepository.save(c);
assertEquals(initialCount + 1, getCategoryCount());
}
}
Run Code Online (Sandbox Code Playgroud)
其中扩展了自定义类:
public abstract class AbstractTransactionalTemplateTests extends AbstractTransactionalJUnit4SpringContextTests {
protected SimpleJdbcTemplate simpleJdbcTemplate;
@Autowired
DashTemplateRepository dashTemplateRepository;
@Resource(name = "dashDataSource")
public void setDataSource(final DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
} ..snip...
Run Code Online (Sandbox Code Playgroud)
更新:我需要执行simpleJdbcTemplate插入,因为我有多个dataSources,默认情况下这个测试类无法处理,我无法找到弹簧支持的解决方案,但在Spring论坛上,贡献者发布了这个解决方法.在我提取这个超类之前存在回滚问题.我假设问题比这更基本,hibernate似乎没有意识到事务管理器,有什么办法可以证明这一点吗?
数据源Bean:
<bean id="dashDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" …Run Code Online (Sandbox Code Playgroud) java ×7
spring ×4
spring-mvc ×3
hibernate ×2
annotations ×1
groovy ×1
junit ×1
lazy-loading ×1
theory ×1
transactions ×1
xml ×1