小编wal*_*mon的帖子

使用Spring-MVC降低Java Web应用程序中的部署频率

是否有一种简单的方法可以将"服务层"与Web层分开部署,这样我就可以减少每周必须包装,打包,构建和部署整个WAR文件的次数?

我主要使用Tomcat,但我希望Java Web服务器更通用.

java spring service-layer

5
推荐指数
1
解决办法
191
查看次数

在Java中使用XML的更好方法

有很多问题需要最好的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会更好吗?

java xml groovy

5
推荐指数
1
解决办法
2537
查看次数

Hibernate - 避免LazyInitializationException - 从代理和会话中分离对象

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,而不必创建看起来像实体的对象,并且必须重新映射所有值.

java hibernate lazy-loading

5
推荐指数
1
解决办法
2766
查看次数

Spring 3 MVC - 高级数据绑定 - 带有简单对象列表的表单请求

我已经阅读了所有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)

spring spring-mvc

5
推荐指数
1
解决办法
3万
查看次数

Spring 3 Annotations

我根本无法获得弹簧注释,我只是想让最简单的工作......

.../mycontext/something - >调用方法:

@RequestMapping(value = "/something")
@ResponseBody
public String helloWorld() {
    System.out.println("hello world");
    return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)

我的主要问题是无论我怎么努力,我找不到所需的配置文件的完整SIMPLE示例,每个春季教程都充满了垃圾,我只是一个控制器来处理带有映射的请求而不能让它工作

有没有人知道一个简单而完整的春天例子.宠物诊所是不好的,它太复杂了,我有一个很小的基本用例,它被证明是一个真正的痛苦工作(这总是发生在春天)

java spring annotations spring-mvc

4
推荐指数
1
解决办法
2170
查看次数

Spring MVC最佳实践处理控制器中不可恢复的异常

如果你的控制器使用服务执行逻辑,而DAO可能会抛出不可恢复的异常,那么处理这些方法调用的最佳做法是什么?

目前我正在研究的应用程序有非常冗长的尝试捕获方法,只是错误的错误消息,这似乎不是非常强大,我认为这个代码闻起来,是否有任何cookie切割器最佳实践处理这个春天 - MVC?

java exception-handling spring-mvc

3
推荐指数
2
解决办法
4645
查看次数

Java防御副本

我见过像这样编码的防御性副本

void someMethod(Date d) {
    myDate = new Date( d.getTime() );
}
Run Code Online (Sandbox Code Playgroud)

但这对我来说没有意义,在Java中是否有办法在该对象的内存中创建相同的副本?

我已经读过clone()不会在所有情况下都行不通,但我不明白为什么.

java theory defensive-programming

1
推荐指数
1
解决办法
2280
查看次数

Spring事务单元测试 - Hibernate查询不回滚

我正在使用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 junit spring hibernate transactions

0
推荐指数
1
解决办法
4653
查看次数