Tag: 春季

如何使用EclipsedebuggingSpring Boot应用程序?

我的Spring Boot webapp运行得很好,我想通过Eclipse进行debugging。 所以当启动我的远程Java应用程序debugging器,我应该听哪个端口? 我的web应用程序有一个设置,我必须设置为启用debugging?

用Hibernate + Spring进行caching – 一些问题!

我正在开发与Spring 3和Hibernate 3.6的Web应用程序。 目前我尝试了解如何使用Spring和Hibernate进行caching。 我发现一些关于Hibernate的caching和Spring的一些资料,现在我试着把我的信息整合在一起。 我仍然对这两个框架都有一些问题,如果有人能回答他们,或者告诉我这里列出的事实是否正确,我会很高兴。 大多数情况下,简短的答案(是/否)就足够了。 我认为这个列表对其他人也是有用的,他们想了解如何使用spring和hibernate进行caching。 General 1) Hibernate支持以下caching:1级caching,2级caching,查询caching 2) Spring本身支持以下caching可能性:只是方法caching 1st Level Cache 3)第一级caching是每个Hibernate应用程序的一部分。 4)第一级caching是为每个hibernate会话创build的。 5)什么是保存在一级caching? 对象还是其属性的值? 查询和他们的结果? 2nd Level Cache 6)我发现:二级caching每个应用程序使用一次。 这不是假的吗? 是不是每个sessionfactory使用一次? 和:多个sessionfactorys =多个二级caching可能? 7)在二级caching中保存的内容:在我看来,只是属于一个logging的值,而不是对象本身。 8)当从二级caching中的一条logging存储值时,它可能存储相关的值(从通过外键连接的对象)呢? 9)在更新二级caching中的一个对象的值时,是否有可能更新caching中与它连接的对象的值呢? 10)当一个对象的值正在改变时,如何更新二级caching? 冲洗? 我可以只更新caching的一部分,或者必须更新整个caching吗? 11)第二级caching在哪里是有意义的,在哪里呢? 12)caching模式:每种caching模式是否提供了不同的caching策略? 例如使用caching模式“只读”,数据库和caching的同步是不必要的? 做其他caching模式提供同步? 我认为同步必须由开发人员自己完成? Query Cache 13)查询caching与二级caching有什么区别? 在我看来:在查询caching结果集保存,但不是与他们的价值,只是与他们的ID。 当再次使用查询并且结果集仍然是“正确的”时,属于id的值从二级caching中查询 14)对于查询caching,必须使用二级caching? 15)查询caching在哪里是合理的,哪里没有? Spring 16) Spring是否比方法caching提供更多的caching可能性? 17)方法caching没有链接到hibernatecaching 18)但是:对于方法caching第二级是必要的,如ehcache(它也可以用于hibernate) 19)可以使用方法caching没有数据库查询? Getting mixed […]

应该在哪里保存@Service注释? 接口还是实现?

我正在使用Spring开发应用程序。 我需要使用@Service注释。 我有ServiceI和ServiceImpl ,使ServiceImpl implements ServiceI 。 我很困惑,在哪里应该保留@Service注释。 我应该使用@Service注释来注释接口还是实现? 这两种方法有什么区别?

如何在生产环境中运行一个spring引导可执行文件jar?

Spring Boot的首选部署方法是通过一个包含tomcat的可执行jar文件。 它是从一个简单的java -jar myapp.jar 。 现在,我想在EC2上将该jar部署到我的linux服务器上,我是否错过了一些东西,或者是否真的需要创build一个init脚本来正确启动应用程序作为后台进程? 如果我简单地调用java -jar则应用程序将在注销时死亡。 我可以在屏幕或nohup启动它,但是这不是很优雅,并在我的服务器重新启动将迫使我login并手动启动该过程。 那么,有没有什么东西在春季启动的任务?

你如何在Spring MVC中设置caching头?

在基于注解的Spring MVC控制器中,为特定path设置caching头的首选方法是什么?

在Spring中将bean引用注入Quartz作业?

我设法在Spring中使用JobStoreTX持久存储来configuration和调度Quartz作业。 我不使用Spring的Quartz作业,因为我需要在运行时dynamic地调度它们,而且我发现将Spring和Quartz集成的所有示例都是在Springconfiguration文件中对shcedules进行硬编码的。无论如何,这里是我安排工作: JobDetail emailJob = JobBuilder.newJob(EMailJob.class) .withIdentity("someJobKey", "immediateEmailsGroup") .storeDurably() .build(); SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger() .withIdentity("someTriggerKey", "immediateEmailsGroup") .startAt(fireTime) .build(); // pass initialization parameters into the job emailJob.getJobDataMap().put(NotificationConstants.MESSAGE_PARAMETERS_KEY, messageParameters); emailJob.getJobDataMap().put(NotificationConstants.RECIPIENT_KEY, recipient); if (!scheduler.checkExists(jobKey) && scheduler.getTrigger(triggerKey) != null) { // schedule the job to run Date scheduleTime1 = scheduler.scheduleJob(emailJob, trigger); } EMailJob是一个使用Spring的JavaMailSenderImpl类发送电子邮件的简单工作。 public class EMailJob implements Job […]

如何在spring-boot中loggingsql语句

我是春季引导的新手。 我想在一个文件中loggingsql语句。 我在application.properties有以下属性 spring.datasource.url=… spring.datasource.username=user spring.datasource.password=1234 spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true security.ignored=true security.basic.enabled=false logging.level.org.springframework.web=INFO logging.level.org.hibernate=INFO logging.file=c:/temp/my-log/app.log 当我运行我的应用程序 cmd>mvn spring-boot:run 我可以在控制台中看到sql语句,但它们不出现在文件app.log中。 该文件仅包含来自spring的基本日志。 我该怎么做才能在日志文件中看到sql语句?

用Spring Security进行unit testing

我的公司一直在评估Spring MVC,以确定我们是否应该在下一个项目中使用它。 到目前为止,我喜欢我所看到的,现在我正在看看Spring Security模块,以确定它是我们可以/应该使用的东西。 我们的安全要求是相当基础的。 用户只需提供用户名和密码即可访问网站的某些部分(如获取有关其帐户的信息); 并且网站上有一些页面(常见问题,支持等),匿名用户应该被授予访问权限。 在我创build的原型中,我一直在Session中为已authentication的用户存储一个“LoginCredentials”对象(它只包含用户名和密码) 例如,一些控制器检查这个对象是否在会话中以获得对login用户名的引用。 我期待用Spring Security取代这个本土化的逻辑,而不是去除任何types的“我们如何跟踪login用户?”的好处。 和“我们如何authentication用户?” 从我的控制器/业务代码。 Spring Security似乎提供了一个(每线程)“上下文”对象,可以从应用程序的任何位置访问用户名/主体信息。 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); …这似乎是非常像spring一样,因为这个对象是(全局)单身,在某种程度上。 我的问题是:如果这是在Spring Security中访问经过身份validation的用户的信息的标准方法,那么在SecurityContext中注入一个Authentication对象的方法是什么,以便在unit testing需要authentication用户? 我是否需要在每个testing用例的初始化方法中进行连线? protected void setUp() throws Exception { … SecurityContextHolder.getContext().setAuthentication( new UsernamePasswordAuthenticationToken(testUser.getLogin(), testUser.getPassword())); … } 这似乎过于冗长。 有更容易的方法吗? SecurityContextHolder对象本身看起来非常像Spring一样…

Spring @Transactional属性是否在私有方法上工作?

如果我在Spring bean的私有方法上有一个@Transactional -annotation,注释是否有效? 如果@Transactional注释在公共方法上,它将工作并打开一个事务。 public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } } … Bean bean = (Bean)appContext.getBean("bean"); bean.doStuff();

在Hibernate中重新挂接分离对象的正确方法是什么?

我有一种情况,我需要将分离的对象重新挂接到一个hibernate会话,虽然同一个标识的对象可能已经存在于会话中,这会导致错误。 现在,我可以做两件事之一。 getHibernateTemplate().update( obj )当且仅当一个对象在hibernate会话中不存在时,它才起作用。 当我稍后需要时,会抛出exception,说明具有给定标识符的对象已经存在于会话中。 getHibernateTemplate().merge( obj )当且仅当hibernate会话中存在一个对象时,它才起作用。 当我需要对象在会话中后,如果我使用这个exception抛出。 鉴于这两种情况,我怎样才能将会话一般附加到对象? 我不想用exception来控制这个问题解决scheme的stream程,因为必须有更优雅的解决scheme。