Tag: spring mvc

Spring – 以编程方式生成一组bean

我有一个Dropwizard应用程序,需要为配置列表中的每个配置生成十几个bean。 健康检查,石英调度等等。 像这样的东西: @Component class MyModule { @Inject private MyConfiguration configuration; @Bean @Lazy public QuartzModule quartzModule() { return new QuartzModule(quartzConfiguration()); } @Bean @Lazy public QuartzConfiguration quartzConfiguration() { return this.configuration.getQuartzConfiguration(); } @Bean @Lazy public HealthCheck healthCheck() throws SchedulerException { return this.quartzModule().quartzHealthCheck(); } } 我有多个MyConfiguration实例都需要像这样的bean。 现在我必须复制并粘贴这些定义,并为每个新配置重命名它们。 我可以以某种方式迭代我的配置类并为每个类生成一组bean定义吗? 我可以使用子类化解决方案或类型安全的任何东西,而不会让我复制并粘贴相同的代码,并在我必须添加新服务时重命名方法。 编辑:我应该补充一点,我有其他依赖这些bean的组件(例如,他们注入Collection 。)

JSP不在Spring中显示模型中的对象

我有什么应该是一个容易解决的问题,但我没有运气。 在我的servlet-servlet.xml文件中,我有以下bean(除了其他bean): 我的测试控制器看起来像这样: package com.servlet.web; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TestController { protected final Log log = LogFactory.getLog(getClass()); @RequestMapping(“/test”) public String methodName(Map map) { map.put(“someMessage”, “some string here”); return “test”; } } 我的jsp视图如下所示: servlet.com ${someMessage} 所以,当我查看jsp时,我会期待someMessage的值(这里有一些字符串),但我只得到以下内容: servlet.com ${someMessage} 当我开始记录日志时,我看到我的someMessage对象正在模型中: 22:21:17,425 DEBUG DispatcherServlet:852 – DispatcherServlet with […]

Spring MVC中的@Named注释

Per Spring 3文档, IoC容器 , @Component注释注释是与@Component注释等效的标准。 由于@Repository , @Service @Controller和@Controller都是@Component ,我试图在我的Spring MVC应用程序中使用@Named用于所有这些。 它工作正常。 但我发现@Controller的替换似乎有一个bug。 在控制器类中,原来是 @Controller public class MyController{ … } 它工作正常。 当我将@Controller更改为@Named @Named public class MyController{ … } 它失败了,错误: “找不到带有URI的HTTP请求的映射……”。 但是如果我将@RequestMapping添加到类中,如下所示 @Named @RequestMapping public class MyController{ … } 它会按预期工作。 对于@Repository和@Service ,我可以简单地用@Named替换它们,没有问题。 但是@Controller的替换需要额外的工作。 我在配置中缺少什么?

在Spring JSP页面中使用集合时的Hibernate LazyInitializationException

我有这样的实体: @Entity @Table(name = “ASSESSMENT”) public class Assessment { //All other fields.. @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = “assessment”) @OrderBy(value = “order ASC”) private List assessmentParts = new LinkedList(); public List getAssessmentParts() { return assessmentParts; } //All other getters/setters } 另一个: @Entity @Table(name = “ASSESSMENT_PART”) public class AssessmentPart { //All other fields @ManyToOne(fetch […]

如何从spring security获取当前登录的用户对象?

我使用的是Spring安全版3.1.4.RELEASE。 如何访问当前登录的用户对象? SecurityContextHolder.getContext().getAuthentication().getPrinciple() 返回用户名,而不是用户对象。 那么如何使用返回的用户名并获取UserDetails对象? 我试过以下代码: public UserDetails getLoggedInUser(){ final Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null && auth.isAuthenticated() && !(auth instanceof AnonymousAuthenticationToken)) { if(auth.getDetails() !=null) System.out.println(auth.getDetails().getClass()); if( auth.getDetails() instanceof UserDetails) { System.out.println(“UserDetails”); } else { System.out.println(“!UserDetails”); } } return null; } 以下是结果: [2015-08-17 19:44:46.738] INFO http-bio-8443-exec-423 System.out class org.springframework.security.web.authentication.WebAuthenticationDetails [2015-08-17 19:44:46.738] INFO http-bio-8443-exec-423 […]

java.lang.OutOfMemoryError:PermGen space Exception

我得到这个java.lang.OutOfMemoryError: PermGen spaceexception。 我正在使用Eclipse Juno和Tomcat 7.0。 此exception在控制台中每10-15分钟至少发生一次。 怎么解决? Feb 25, 2016 10:23:23 AM org.springframework.beans.factory.support.DefaultListableBeanFactory destroyBean SEVERE: Destroy method on bean with name ‘mvcUrlPathHelper’ threw an exception java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) […]

将byte 转换为图像并在jsp上显示

我正在尝试在jsp页面上显示上传的图片(现在是一个字节数组)。 现在,byte []列存在于数据库中,必须转换为图像。 这就是我一直在尝试的: jsp页面上的部分表格: ${user.fileName} 从MultipartFile对象获取字节数组的控制器的一部分: @RequestMapping(value = “/register”, method = RequestMethod.POST) public ModelAndView userRegister(@ModelAttribute(“user”) @Valid User user, BindingResult result, ModelMap model, @RequestParam(“fileData”) MultipartFile fileData) throws Exception { if (!fileData.isEmpty() && fileData != null) { byte[] bytes = fileData.getBytes(); user.setFileName(fileData.getOriginalFilename()); user.setImageFile(bytes); } } 如果需要任何其他信息,请告诉我。 谢谢。

Spring @Validated在服务层

HEJ, 我想在执行如下方法之前使用@Validated(group=Foo.class)注释来validation参数: public void doFoo(Foo @Validated(groups=Foo.class) foo){} 当我将此方法放在我的Spring应用程序的Controller中时,执行@Validated并在Foo对象无效时抛出错误。 但是,如果我在我的应用程序的Service层中的方法中放置相同的东西,则不会执行validation,即使Foo对象无效,该方法也会运行。 你不能在服务层使用@Validated注释吗? 或者我是否必须配置额外的东西以使其工作? 更新: 我在service.xml中添加了以下两个bean: 并用@Validate替换@Validate , @Null所示: public void doFoo(Foo @Null(groups=Foo.class) foo){} 我知道这是一个非常愚蠢的注释,但我想检查一下,如果我现在调用该方法并传递null,它将抛出违规exception。 那么为什么它执行@Null注释而不是@Validate注释呢? 我知道一个来自javax.validation而另一个来自Spring,但我不认为这与它有什么关系?

我在哪里定义`springSecurityFilterChain` bean?

当我将springSecurityFilterChain的bean定义放在web.xml ,我收到一个错误,指示Tomcat 7无法启动,因为duplicate bean definition for springSecurityFilterChain有一个duplicate bean definition for springSecurityFilterChain 。 我将整个堆栈跟踪上传到文件共享站点,您可以通过单击此链接阅读该站点。 但是,当我在web.xml springSecurityFilterChain bean定义并尝试重新启动服务器时,我得到一条不同的错误消息,指出springSecurityFilterChain没有bean定义。 您可以通过单击此链接来读取文件共享站点上的第二个堆栈跟踪。 那么我应该把springSecurityFilterChain的bean定义放在springSecurityFilterChain ,它的语法应该是什么? 我认为问题可能是我用来测试这种方法的spring petclinic示例应用程序有自己的方式使用clinicservice和自己的xml配置文件来处理应用程序启动和资源管理。 您可以在此链接中查看spring petclinic应用程序的完整代码。 我对petclinic应用程序所做的更改如下: 我在pom.xml中添加了以下内容: org.springframework.security spring-security-core 3.2.2.RELEASE org.springframework.security spring-security-web 3.2.2.RELEASE org.springframework.security spring-security-config 3.2.2.RELEASE 我在web.xml中添加了以下内容: springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* 我在Java Resources向src/main/java添加了一个名为org.springframework.security.samples.knowledgemanager.config的包,然后我向它添加了以下两个类: MessageSecurityWebApplicationInitializer.java: @Order(2) public class MessageSecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {} SecurityConfig.java: @Configuration @EnableWebMvcSecurity public class SecurityConfig […]

Spring MVC @RequestMappinginheritance

来自Struts2我习惯于在超类(或者package-info.java )上声明@Namespace注释,inheritance类随后将获取其祖先的@Namespace注释中的值,并将其添加到请求路径中行动。 我现在尝试使用@RequestMapping注释在Spring MVC中执行类似的操作,如下所示(为简洁起见,代码已修剪): package au.test @RequestMapping(value = “/”) public abstract class AbstractController { … } au.test.user @RequestMapping(value = “/user”) public abstract class AbstractUserController extends AbstractController { @RequestMapping(value = “/dashboard”) public String dashboard() { …. } } au.test.user.twitter @RequestMapping(value = “/twitter”) public abstract class AbstractTwitterController extends AbstractUserController { … } public abstract class TwitterController extends […]