我目前正在尝试在使用Spring MVC(4.0.0)和Thymeleaf(2.1.1)作为模板引擎的现有项目中实现Dart.
目前我正在部署我所有的Dart资源,/dart如下所示.
<link rel="import" th:href="@{/dart/wb-control-text.html}" />
<script type="application/dart" th:src="@{/dart/packages/polymer/init.dart}"></script>
<script th:src="@{/dart/packages/browser/dart.js}"></script>
Run Code Online (Sandbox Code Playgroud)
Thymeleaf重写网址http://localhost:8080/context/dart/...,这是正确的.
如果直接打开一个packages直接在其下面有文件夹的HTML文件,Dart的效果非常好.但是,在我的项目中并非如此,该项目具有友好的URL,/action/users/browse并且您无法直接访问HTML文件.
当Dart库尝试导入包时,我收到404错误,因为它在错误的位置寻找它(例如/dart/packages/polymer/packages/polymer/polymer.dart).
我是否需要提供URL请求处理程序或处理所有**/packages/**请求的过滤器(并且只使用相对于当前URL的路径)?或者在Dart中有一个选项,您可以在其中设置应该查找包的位置?
这个解决方案(或解决方法)是什么?
编辑
我目前有一个有效的临时解决方案,但它很脏,我仍在寻找更清洁的解决方案.
我将包添加到我的类路径中,并创建了一个DartPackagesFilter流式传输资源:
public class DartPackagesFilter extends OncePerRequestFilter
@Override
protected void doFilterInternal(final HttpServletRequest request,
final HttpServletResponse response,
final FilterChain filterChain)
throws ServletException, IOException {
final String uri = request.getRequestURI();
final int index = uri.indexOf("/packages/"); …Run Code Online (Sandbox Code Playgroud) 我开发了一个 Spring Web-MVC 应用程序。我的项目中有一些办公室。每个用户属于一个办公室。user.getOfficeType()返回一个表示用户办公室类型的整数。如果 office 类型为 1,则用户属于 Office1 等。但是我想将经过身份验证的用户的 office 注入我的服务类:
class MyService{
@Autowired
Office currentOffice;
...
}
Run Code Online (Sandbox Code Playgroud)
我阅读了 Spring 文档。我需要一个会话范围的 bean 将它注入到我的服务类中。
applicationContext.xml :
<mvc:annotation-driven />
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
<context:annotation-config />
<context:component-scan base-package="com.package.controller" />
<context:component-scan base-package="com.package.service" />
...
<bean id="office" class="com.package.beans.Office" scope="session">
<aop:scoped-proxy/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我有Office接口的三个实现。一旦用户请求资源,我想知道他的办公室。所以我需要将他的会话范围的 Office 注入我的服务类。但是我不知道如何根据用户的办公室来实例化它。请帮忙!
编辑
我创建了一个复制问题的测试项目.它可以在https://github.com/tomverelst/test-batch找到.
首先运行maven命令exec:java以启动HSQL数据库.然后,您可以运行JUnit测试MigrationJobConfigurationTest来加载Spring应用程序上下文.
原始问题
启动Spring Batch应用程序时,Spring加载我的作业配置时出现以下异常:
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy34]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class com.sun.proxy.$Proxy34
Run Code Online (Sandbox Code Playgroud)
这是由@StepScope我的作业配置中的注释引起的.它试图用已经用JDK代理代理的CGLIB代理一个类,我不知道这个JDK代理的来源.
我也试过使用@Scope(value = "step", proxyMode = ScopedProxyMode.NO),但是当调用JDK代理时,我得到一个堆栈溢出错误,它继续调用自己.
如果删除@StepScope注释,应用程序将正确启动,但我需要能够将它们用于我的工作.
Spring配置
<context:component-scan base-package="com.jnj.rn2.batch" />
<context:annotation-config />
<aop:aspectj-autoproxy proxy-target-class="true" />
<bean class="org.springframework.batch.core.scope.StepScope" />
// Job repository etc
...
Run Code Online (Sandbox Code Playgroud)
MigrationJobConfiguration …
当我导入" import.io "时,它不会加载任何网页.我使用Windows 8.1/Win 64,我有Java版本8更新45. 当程序退出时,我得到以下" 错误协议 ":
!SESSION 2015-04-29 11:24:52.715 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_09
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Command-line arguments: -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.osgi 4 0 2015-04-29 11:25:58.688
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTError: XPCOM error 0x80004005
at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:2639)
at org.eclipse.swt.browser.Mozilla.onDispose(Mozilla.java:2658)
at org.eclipse.swt.browser.Mozilla$5.handleEvent(Mozilla.java:966)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
at org.eclipse.swt.widgets.Widget.release(Widget.java:808)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
at …Run Code Online (Sandbox Code Playgroud) java ×3
spring ×2
spring-mvc ×2
cglib ×1
dart ×1
eclipse ×1
import.io ×1
spring-aop ×1
spring-batch ×1
spring-bean ×1
thymeleaf ×1