Tag: spring

如何使用Hibernate为Spring数据JPA的所有查找方法添加全局where子句?

我们正在使用Spring数据JPA和hibernate开发Web应用程序。 在应用程序中,每个实体都有一个compid字段。 这意味着每个数据库调用(Spring Data方法)都必须使用compid进行检查。 我需要一种方法,这个“compid =?” 检查每个查找方法是否自动注入。 因此,我们不必特别打扰编译检查。 这可能是从Spring Data JPA框架实现的吗?

没有注释的Java中的DI?

是否有任何方法(现有框架)在Java中配置DI而无需向“不属于”的类添加注释? 在我的研究中,看起来要完成构造函数注入,我们需要在构造函数中添加一些注释,如下所示: @Inject // or @Autowired for Spring Boot public MyInjectedClass(IThing1 thing1, IThing2 thing2) { … } Spring Boot还建议将@Service添加到实现中,以便将它们注册到DI中进行注入。 添加这些注释会将DI带入注入的类( MyInjectedClass和任何控制器,服务实现等)。 那些类应该没有DI的概念,它们应该只是在构造函数中给出它们要求的东西而不关心它们是如何到达那里的。 我知道你可以在Spring Boot中使用@Configuration属性,但这仍然感觉不是很可配置或强大。 有没有办法使用没有注释的Java来实现这一点? 比如SimpleInjector,AutoFac等在C#中如何工作? (通过代码配置,而不是XML或配置文件,而不是通过注释。) 如果没有,我很好奇为什么在DI和C#之间采用了这种不同的方法。 更新我在评论中冒犯了某人,但这根本不是我的意图。 我问一个合理的问题。 让我以另一种方式强调我的关切/问题。 假设我有以下包/类。 我已经标记了每种类型的DI都会出现的情况。 “出现”是指这些标记的类/包与正在使用的DI框架有一些关系。 [A] :基于注释的DI(第三方包依赖) [C] :基于配置的DI data_access [A] 资料库 PersonRepository [A] 逻辑[A] 人 CreatePersonCommandHandler [A] UpdatePersonCommandHandler [A] 服务[A] [C] 控制器 PersonController [A] [C] […]

Spring Context init(java)

我是spring的初学者,我遇到了基本的上下文初始化问题,我找不到任何简单的教程。 所以我想做的是基本的dependency injection,我已经看到我只需要将类标记为@Componant或@Service,并使用@Autowired直接将它们注入目标fiels中。 为此,我需要正确设置我的spring上下文(我需要构建一个Web服务+使用JPA,所以我想构建一个webapp) 我正在使用JDK 1.8,maven 3.2.1 我想做一个基本的dependency injection。 =>我想在那里注入一个storeImpl实例,但这会导致空指针exception=>这项工作完全没有注入(私有商店storeImpl = new storeImpl();) package com.mycompany.app.controller; @Controller public class Controller { @Autowired private Store storeImpl; public void use() { storeImpl.get(); } } package com.mycompany.app.store; public interface Store { boolean get(); } package com.mycompany.app.store; @Component public class StoreImpl implements Store { @Override public boolean get() { return […]

动态数据源路由 – 未初始化DataSource路由器

我指的是本文 ,我们可以使用Spring Framework中的AbstractRoutingDataSource动态更改应用程序使用的数据源。 我正在使用Mybatis(3.3.0)和Spring(4.1.6.RELEASE)。 如果从主数据库获取数据时发生exception,我想切换到备份数据库。 在这个例子中,我使用了hsql和mysql db。 RoutingDataSource : public class RoutingDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getTargetDataSource(); } } DataSourceContextHolder : public class DataSourceContextHolder { private static final ThreadLocal contextHolder = new ThreadLocal(); public static void setTargetDataSource(DataSourceEnum targetDataSource) { contextHolder.set(targetDataSource); } public static DataSourceEnum getTargetDataSource() { return (DataSourceEnum) contextHolder.get(); } […]

Spring Error – java.lang.NoSuchMethodError:> org.springframework.beans.factory.annotation.InjectionMetadata。

伙计们, 我试图运行一个使用@Required.的简单弹簧示例@Required. 但是,当我运行主方法类时,我得到下面的exception跟踪? 线程“main”中的exceptionjava.lang.NoSuchMethodError:org.springframework.beans.factory.annotation.InjectionMetadata。(Ljava / lang / Class; Ljava / util / Collection;)V org.springframework.orm.jpa.support。 PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:377)在org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:295)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java: 750)atg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:451)at java.security的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run(AbstractAutowireCapableBeanFactory.java:412)。 org.springframework.beans.fac中的AccessController.doPrivileged(Native Method) 位于org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:276)的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton中的tory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383) (DefaultSingletonBeanRegistry.java:222)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:175)at Org.springframework.bens.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:485)位于org.springframework.context.support.AbstractApplicationContext的org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:716)。刷新(AbstractApplicationContext.java:377)org.springframework.context.support.ClassPathXmlApplicationContext。(Clas sPathXmlApplicationContext.java:139)atg.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)at com.springexamples.annotation.required.EmployeeTest.main(EmployeeTest.java:19) 我是否在classpath中缺少任何特定的jar? 谢谢

传播.REQUIRES_NEW似乎不起作用

使用Spring(MVC,Batch和persistence)我定义了以下接口: public interface JobStatusService { @Transactional(readOnly = false) @Modifying JobStatus save(JobStatus status); @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) Optional get(ResultsIdentifier identifier); } 请注意REQUIRES_NEW因为它是在破碎的方法上。 该接口实现于: @Override public JobStatus save(JobStatus status) { if (status.getUserId() == null) { status.setUserId(userService.getCurrentUser()); } status.setLastUpdateTime(new Date()); return repository.save(status); } @Override public Optional get(ResultsIdentifier identifier) { return repository.findByJobIdentifier(identifier); } 其中repository是JPA存储库,其中包含以下内容: public interface JobStatusRepository […]

spring-hibernate花费更多时间的原因是什么?

目前,我正在Spring和hibernate上开展一个项目。我来到这里。 获取记录并在JSP中显示这些记录需要更多时间。 我把时间戳保存在各处,看看它花了更多的时间: Time @ HomeController[start] : 2014-07-09 18:58:52.621 **Time @ userService[start] : 2014-07-09 18:58:52.622** **Time @ UserDao[start] : 2014-07-09 18:58:57.678** Time before executing Query : 2014-07-09 18:58:57.678 Time After executing Query : 2014-07-09 18:58:59.272 Time @ UserDao[end] : 2014-07-09 18:58:59.272 Time @ userService[End] : 2014-07-09 18:59:00.068 Time @ HomeController[end] : 2014-07-09 18:59:00.068 Time stamp […]

在Spring上下文中导入/过滤属性

我正在使用Java 1.6和Spring 3.1.1。 我正在尝试将外部属性文件读入Spring上下文。 这是关键点:第一个属性文件包含下一个属性文件的路径。 例: $ {user.home}中的第一个属性文件: resource.dir=C:/users/smith config.dir=${resource.dir}/configuration 第二个属性文件$ {config.dir}(在第一个属性文件中定义): datasource.name=jdbc:mysql://dbserver:3306/test datasource.prop1=etc datasource.prop2=etc 所以我需要读取第一个文件,处理这些属性,并使用它们来获取第二个文件。 使用Spring PropertyPlaceholderConfigurer只能将我带到第一个文件。 我已经读过你在app环境中只能有一个PropertyPlaceholderConfigurer,这似乎是真的。 [编辑:请参阅https://jira.springsource.org/browse/SPR-6428获取解释。] 谁知道最好的方法呢? 编辑:如果您正在运行ant的构建,这显然很容易,不幸的是我的项目使用Maven。 您可以使用PROPERTY标记执行第一步,并“自动”解析下一步的所有内容,允许您将类路径设置为$ {cfg.dir}目录等。然后,您可以“正常”读取属性这些目录。 我希望Spring或Maven允许我使用相同的function,但还没有找到答案…… ANT示例:

消息级别Jax-WS服务

我正在尝试创建一个WebService存根。 我喜欢在一个地方对所有请求做出反应。 我有一个示例值生成器,它处理请求的类型并创建一个示例响应,因此我不需要具有大量类的代码生成器。 只是一个非常简单的。 我找到了http://jax-ws.java.net/nonav/2.2.1/docs/provider.html WebServiceProvider,它正是为了获取原始SOAP消息,并在一个地方创建响应。 主要的问题是我是这个神奇的EE世界的新手:)我无论如何都无法启动WebServiceProvider示例。 我有Spring,SpringSource ToolSuit,Axis安装/配置,所有其他的东西都工作。 谢谢大家的帮助,如果问题对你来说太简单,请原谅。 也许我只是没找到/读过的东西。 M.

spring rest data序列化为一个关联作为相关实体

如何配置Spring Data Rest 直接序列化相关实体? 我希望它看起来像这样:注意“所有者”链接是指“帐户”实体。 { “name” : “customer”, “_links” : { “self” : { “href” : “http://localhost:8081/api/v1/servers/1005” }, “owner” : { “href” : “http://localhost:8081/api/v1/account/100” } } } 当前(默认)具有间接序列化的相关实体(aka,association)。 我不希望它看起来像这样: “所有者”链接是通过自助服务器实体。 { “name” : “customer”, “_links” : { “self” : { “href” : “http://localhost:8081/api/v1/servers/1005” }, “owner” : { “href” : “http://localhost:8081/api/v1/servers/1005/owner” } } } 我检查了文档,但没有找到任何提及“直接”路线。