Tag: 春季

Spring框架到底是什么?

我听到很多关于Spring的信息 ,人们都在网上说Spring是一个很好的Web开发框架。 Spring框架到底是什么? 我如何将它用于我的Web-Java应用程序开发? 任何例子?

使用Spring和Hibernate跨多个数据库进行分布式事务的“最佳”方式是什么?

我有一个应用程序 – 更像是一个实用程序 – 位于一个angular落,并定期更新两个不同的数据库。 这是一个有点独立的应用程序,已经build立了一个Spring应用程序上下文。 上下文中configuration了两个Hibernate Session Factories,然后使用Spring中configuration的Commons DBCP数据源。 目前没有交易pipe理,但是我想补充一些。 对一个数据库的更新取决于对另一个数据库的成功更新。 该应用程序不在Java EE容器中 – 它由从shell脚本调用的静态启动器类引导。 启动器类实例化应用程序上下文,然后在其一个bean上调用一个方法。 在数据库更新中使用事务性的“最佳”方法是什么? 我会把“最好”的定义留给你,但我认为它应该是“容易设置”,“容易configuration”,“便宜”和“容易打包和重新分配”等function。 自然,FOSS会很好。

Spring事务和hibernate.current_session_context_class

我有一个使用Hibernate 4和Spring事务的Spring 3.2应用程序。 所有的方法工作得很好,我可以正确访问数据库来保存或检索实体。 然后,我介绍了一些multithreading,并且由于每个线程都访问数据库,我从Hibernate获得以下错误: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions 我从网上读到,我必须添加<prop key="hibernate.current_session_context_class">thread</prop>到我的Hibernateconfiguration,但现在每次我尝试访问数据库我得到: org.hibernate.HibernateException: saveOrUpdate is not valid without active transaction 然而,我的服务方法是用@Transactional注释的,并且在添加<prop key="hibernate.current_session_context_class">thread</prop>之前,所有工作都正常。 为什么没有交易,虽然方法用@Transactional注释? 我该如何解决这个问题? 这里是我的Hibernateconfiguration(包括会话上下文属性): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> <!– Hibernate session factory –> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" > <property name="dataSource" > […]

如何从连接表创build多个到多个Hibernate映射的附加属性?

我需要一个多对多的Hibernate映射,需要3个连接。 我试图find一个没有像LecturerCourse这样的中间实体的解决scheme。 在我的讲师和课程表之间,我的数据库中有很多关系。 一个讲座可以由几个讲师给,而讲师可以给几个课程。 我有课前存储的课程。 但是,我需要给讲师分配课程。 当我分配课程时,我也储存了这门课程的能力。 我的数据库图表: 我用冬眠和spring。 当课程分配任何讲师时,我需要一个hibernate映射。 我需要为容量字段添加值。 我的讲师映射: @Entity @Table(name="LECTURER") public class Lecturer { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="LECTURER_ID_SEQ") @SequenceGenerator(name="LECTURER_ID_SEQ", sequenceName="LECTURER_ID_SEQ") private Long Id; @Column(name="NAME") private String name; @Column(name="SURNAME") private String surname; @Column(name="EMAIL") private String email; @Column(name="USERNAME") private String username; @Column(name="PASSWORD") private String Password; @ManyToMany @JoinTable( name="LECTURER_COURSE", joinColumns=@JoinColumn(name="LECTURER_ID"), inverseJoinColumns=@JoinColumn(name="COURSE_ID") ) private List<Course> courses; […]

Spring Boot – 处理Hibernate SessionFactory

有谁知道如何获得由Spring Boot创build的Hibernate SessionFactory?

如何将Spring与Hibernate会话和事务pipe理集成?

我是冬眠和spring的初学者。 我已经了解了hibernate事务划分(至less我是这么认为的)。 但是在编写这样几个方法之后: sessionFactory.getCurrentSession().beginTransaction(); //do something here sessionFactory.getCurrentSession().endTransaction(); 我开始想避免它,并希望在我的方法之外自动完成,这样我只写“//在这里做某事”部分。 我已经阅读了关于TransactionProxyFactoryBean,并认为XMLconfiguration是非常长的,必须重复每个类我想使交易,所以如果可能我要避免使用它。 我试图使用@Transactional,但它根本不工作。 我在我的applicationContext.xml中有这些行 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml" /> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="dataSource" ref="dataSource" /> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> 我已经用@Transactional标记了我的服务类,但是我总是得到“xxx没有活动事务无效”。 这是一个示例代码给我一个错误(在unit testingbtw中运行): @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:applicationContext.xml" }) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) public […]

Spring Boot删除白标签错误页面

我试图删除白标签错误页面,所以我所做的是创build了一个控制器映射为“/错误”, @RestController public class IndexController { @RequestMapping(value = "/error") public String error() { return "Error handling"; } } 但现在我得到这个错误。 Exception in thread "AWT-EventQueue-0" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'basicErrorController' bean method public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, […]

@PostConstruct方法上的@Transactional

我想在我的应用程序的开始读取文本数据灯具 (CSV文件),并将其放入我的数据库。 为此,我使用初始化方法( @PostConstruct注释)创build了一个PopulationService 。 我也希望它们在一个事务中被执行,因此我在同一个方法中添加了@Transactional 。 但是,@Transactional似乎被忽略了:事务在我的低级DAO方法中被启动/停止。 我需要手动pipe理交易吗?

Spring Security在成功login后redirect到上一页

我知道这个问题之前已经被问过了,但是我在这里面临着一个特殊的问题。 我使用弹簧安全3.1.3。 我的Web应用程序中有3个可能的login情况: 通过login页面login:OK。 通过受限页面login:也可以。 通过非限制性页面login:不行…每个人都可以访问“产品”页面,如果用户login,用户可以发表评论。 因此,login表单被包含在同一页面中以允许用户连接。 情况3)的问题是我无法将用户redirect到“产品”页面。 无论如何,他们会在成功login后redirect到主页。 请注意,对于情况2)成功login后,redirect到受限制页面的方式是开箱即用的。 这是我的security.xml文件的相关部分: <!– Authentication policy for the restricted page –> <http use-expressions="true" auto-config="true" pattern="/restrictedPage/**"> <form-login login-page="/login/restrictedLogin" authentication-failure-handler-ref="authenticationFailureHandler" /> <intercept-url pattern="/**" access="isAuthenticated()" /> </http> <!– Authentication policy for every page –> <http use-expressions="true" auto-config="true"> <form-login login-page="/login" authentication-failure-handler-ref="authenticationFailureHandler" /> <logout logout-url="/logout" logout-success-url="/" /> </http> 我怀疑“每个页面的身份validation策略”是对这个问题负责。 但是,如果我删除它,我不能再login… j_spring_security_check发送404错误。 编辑: […]

如何以正确的方式closuresSpring Boot应用程序?

在Spring Boot文档中,他们说'每个SpringApplication都会向JVM注册一个closures钩子,以确保ApplicationContext在退出时正常closures。 当我在shell命令上单击ctrl+c时,应用程序可以正常closures。 如果我在生产机器上运行应用程序,则必须使用命令java -jar ProApplicaton.jar 。 但是我不能closuresshellterminal,否则会closures这个进程。 如果我像nohup java -jar ProApplicaton.jar &那样运行命令,我不能使用ctrl+c来正常closures它。 在生产环境中启动和停止Spring Boot应用程序的正确方法是什么?