草庐IT

java - spring web, security + web.xml + mvc dispatcher + Bean 创建两次

我的Web.xml如下:mvc-dispatcherorg.springframework.web.servlet.DispatcherServlet1mvc-dispatcher/springSecurityFilterChainorg.springframework.web.filter.DelegatingFilterProxyspringSecurityFilterChain/api/secure/*[编辑]在我添加了Spring安全之后,我得到了错误!java.lang.IllegalStateException:NoWebApplicationContextfound:no

java - Spring:如何干净地终止原型(prototype)范围的 bean?

根据Spring文档,当bean被限定为“原型(prototype)”时,spring不会管理其对象的完整生命周期。更具体地说,不调用销毁生命周期回调。客户端代码必须进行所需的清理。spring文档还建议为此目的使用自定义bean后处理器。但是“BeanPostProcessor”接口(interface)只包含bean初始化前后的回调方法。没有销毁回调的方法。那么prototype-scopedbeans获得的资源在哪里以及如何释放呢? 最佳答案 您要查找的是DestructionAwareBeanPostProcessor,它是

Spring Javaconfig bean间依赖关系

浏览SpringJavaconfig引用文档http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html我发现了一些令人困惑的部分......在"5.12.4使用@Configuration注释"部分下它说:“当@Beans相互依赖时,表达这种依赖就像让一个bean方法调用另一个bean方法一样简单:@ConfigurationpublicclassAppConfig{@BeanpublicFoofoo(){returnnewFoo(bar());}@Bean

java - 如何让 Spring 打印出它通过组件扫描获取的 bean 定义?

我有一个为组件扫描配置的spring应用程序,是否有我可以打开的标志或选项会导致spring打印出spring框架扫描器拾取的类的完全限定名称? 最佳答案 您可以通过配置日志类别(假设您使用log4j)来打印此内容,在调试级别设置org.springframework.context.annotation。检查org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(String

java - 覆盖java配置中的bean定义

我有一个配置类@ConfigurationpublicclassFooConfig{@BeanpublicFooServicefooService(){...}@BeanpublicAbcServiceabcService(){...}}该类是在我无法更改的库中定义的。我有一个项目,在很多地方都使用了FooService。在我的项目中,我有另一个配置类@Configuration@Import({FooConfig.class,})publicclassBarConfig{@AutowiredAbcServiceabc;...}此处使用AbcService是因为有些服务依赖于该服务,并

java - Spring Data JPA - 考虑在配置中定义一个名为 'entityManagerFactory' 的 bean

我正在使用Tomcat、Mysql5、Java8在Spring中开发应用程序...问题是我无法部署它,因为“找不到所需的bean'entityManagerFactory'”问题。我和我的同事一起开发了这个项目,但他们可以完美地部署它,解决任何问题,即使我在SpringToolSuite中复制粘贴同一个项目。怎么可能?错误:2016-12-1517:41:12.777WARN3676---[main]ationConfigEmbeddedWebApplicationContext:Exceptionencounteredduringcontextinitialization-cance

java - 我不能 @Autowire 一个存在于依赖库 Jar 中的 Bean 吗?

我有一个SpringBoot应用程序(Y),它依赖于一组打包为x.jar的库文件,并在应用程序Y的pom.xml中作为依赖项提及。x.jar有一个名为(User.java)的bean应用程序Y有一个名为(Department.java)的java类当我尝试在Department.java中AutowiringUser.java的实例时,我收到以下错误我不能@Autowire一个存在于依赖库Jar中的Bean吗?Couldnotautowirefield:privatecom.Useruser;nestedexceptionisorg.springframework.beans.fact

java - Spring bean别名用法

我知道bean别名在spring中是什么意思。但我想知道使用别名的用例。为什么有人要使用别名而不是名称来引用bean?提前致谢。 最佳答案 我见过的一种用法如下:给定接口(interface)(SomeBean)的两个实例:一个用于环境A,一个用于环境B。因此您定义了两个bean:一个命名为“someBeanForA”,另一个命名为“someBeanForB”。必须注入(inject)此SomeBean的bean不知道它们必须使用哪一个:这取决于环境。所以他们使用别名:@Autowired@Qualifier("someBeanAl

java - Spring 是否以线程安全的方式发布 bean?

我对JVM内部的了解是,如果引用没有正确发布,不同的线程可能会看到相同字段的不同值。我的问题是:Springbeans容器能保证安全发布吗?如果不能,我应该让我所有的beangetter和setter同步还是使用volatile?或者也许使用final字段和构造函数初始化?我认为这可能只是单例bean的问题,因为原型(prototype)bean是根据请求线程的需求创建的。我的理解正确吗? 最佳答案 正如Evgeniy所说,应用程序上下文的初始化发生在单个线程中。因此,您的问题的答案与Spring的内部没有太大关系,而是与创建上下文

Spring - 如何销毁原型(prototype)范围的 bean?

我有一个单例bean,它有一个创建原型(prototype)bean实例的方法。我用的方法documentedhere获取原型(prototype)bean的实例。publicclassSingletonServiceimplementsApplicationContextAware{privateApplicationContextapplicationContext;publicvoidgo(){MyPrototypeBeanprototype=applicationContext.getBean(MyPrototypeBean.class);prototype.doSomethi