我正在学习Spring,我正在读的书有下面的代码行
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
为什么需要static关键字,在静态方法上声明@bean
注释是否正常,如果是,为什么?
PropertySourcesPlaceHolderConfigureer
对象是一个BeanFactoryPostProcessor
,因此,根据Spring文档:
必须特别考虑返回SpringBeanFactoryPostProcessor
(BFPP)类型的@bean
方法。由于BFPP对象必须在容器生命周期的早期进行实例化,因此它们可能会干扰@Autowired
、@value
和@postconstruct
类中注释的处理,如@configuration
。为了避免这些生命周期问题,请将BFPP-returning@bean
方法标记为static
。
通过将此方法标记为静态,可以在不导致其声明@configuration
类实例化的情况下调用它,从而避免上述生命周期冲突。但是请注意,静态@bean
方法不会像上面提到的那样增强作用域和AOP语义。这在BFPP情况下是可行的,因为其他@bean
方法通常不会引用它们。作为提醒,将为返回类型可分配给BeanFactoryPostProcessor
的任何非静态@bean
方法发出警告级日志消息。
问题内容: Waaah,戏剧!框架有很多静态方法。我在哪里上学,我们被告知 从来没有 使用任何静态的,但玩!像没有明天一样使用它。可以吗?如果是这样,为什么? 我们(和我7个人)正计划使用Play!涉及Web应用程序的项目的框架。我们决定通过Play做到这一点!因为这样做看起来很有趣,所以我们所有人都已经知道Java,并且分配工作非常困难,因此我们希望专注于实际分配而不是学习如何使用其他语言进行编
我试图使用相对路径在jsp文件中加载静态资源,如css文件和javascript文件,但servlet映射似乎覆盖了对它们的映射。 项目结构: web.xml: mvc调度程序servlet。xml: 我尝试加载样式表的JSP文件: 我得到的错误是: 警告组织。springframework。网状物servlet。PageNotFound:1108-在名为“mvc dispatcher”的Disp
我想创建Spring boot Web应用程序。 我有两个静态html文件:一个。html,两个。html。 我想将它们映射如下 不使用模板引擎(Thymeleaf)。 如何做到这一点?我已经尝试了很多方法来实现这一点,但我有404个错误或500个错误(循环视图路径[one.html]:将调度回当前处理程序URL)。 OneController.java是: 项目结构为
我希望在访问我的应用程序之前对所有用户进行身份验证。以下是配置中的设置。groovy: 我之所以放置“/登录/身份验证”:[“permitAll”],是因为任何用户都有机会登录并通过身份验证。但是,当我访问http://localhost:8080/myapp/,它重定向到http://localhost:8080/myapp/login/auth并抛出错误:页面没有正确重定向。你能告诉我我犯了什
我试图提供一个静态资源(css文件)。 我已经注册了位置和处理程序 所以Tomcat的记录器显示到资源的正确映射 将URL路径[/resources/**]映射到类型为[类org.springframework.web.servlet.resource.ResourceHttpRequestHandler]的处理程序上 当浏览器呈现视图时,检查器显示404错误,试图获取静态资源。 应用初始化器。J
问题内容: 如果我正在编写用于创建对象的静态工厂方法,那么如何为该工厂类使用’@Component’批注并指示(带有一些批注)创建该类bean所应使用的静态工厂方法?以下是我的意思的伪代码: 问题答案: 恐怕您目前无法执行此操作。但是,使用Java配置非常简单: 在这种情况下,不需要任何Spring注释。当然,您可以改用优质的XML。