java调用spring bean_在Spring java配置中调用@Bean注释方法

我很好奇spring spring如何使用@Bean注释处理调用方法.如果我在方法上放置一个@Bean注释,并返回一个实例,我理解这会告诉spring通过调用该方法并获取返回的实例来创建一个bean.但是,有时该bean必须用于连接其他bean或设置其他代码.通常的方法是调用@Bean带注释的方法来获取实例.我的问题是,为什么这不会导致有多个bean浮动的实例?

例如,请参阅下面的代码(取自另一个问题). entryPoint()方法用@Bean注释,所以我想spring会创建一个BasicAuthenticationEntryPoint的新实例作为bean.然后,我们在配置块中再次调用entryPoint(),但似乎entryPoint()返回bean实例,并且多次调用(我尝试记录,只有一个日志条目).我们可能会在配置的其他部分多次调用entryPoint(),并且我们总是会获得相同的实例.我对此的理解是否正确? Spring是否对使用@Bean注释的方法进行了一些神奇的重写?

@Bean

public BasicAuthenticationEntryPoint entryPoint() {

BasicAuthenticationEntryPoint basicAuthEntryPoint = new BasicAuthenticationEntryPoint();

basicAuthEntryPoint.setRealmName("My Realm");

return basicAuthEntryPoint;

}

@Override

protected void configure(HttpSecurity http) throws Exception {

http

.exceptionHandling()

.authenticationEntryPoint(entryPoint())

.and()

.authorizeUrls()

.anyRequest().authenticated()

.and()

.httpBasic();

}

我很好奇spring spring如何使用@Bean注释处理调用方法.如果我在方法上放置一个@Bean注释,并返回一个实例,我理解这会告诉spring通过调用该方法并获取返回的实例来创建一个bean.但是,有时该bean必须用于连接其他bean或设置其他代码.通常的方法是调用@Bean带注释的方法来获取实例.我的问题是,为什么这不会导致有多个bean浮动的实例? 例如,请参阅下面的代码(取自另一个问题). entryPoint()方法用@Bean注释,所以我想spring会创建一个BasicAuthenticationEntryPoint的新实例作为bean.然后,我们在配置块中再次调用entryPoint(),但似乎entryPoint()返回bean实例,并且多次调用(我尝试记录,只有一个日志条目).我们可能会在配置的其他部分多次调用entryPoint(),并且我们总是会获得相同的实例.我对此的理解是否正确? Spring是否对使用@Bean注释的方法进行了一些神奇的重写? @Bean public BasicAuthenticationEntryPoint entryPoint() { BasicAuthenticationEntryPoint basicAuthEntryPoint = new BasicAuthenticationEntryPoint(); basicAuthEntryPoint.setRealmName("My Realm"); return basicAuthEntryPoint; } @Override protected void configure(HttpSecurity http) throws Exception { http .exceptionHandling() .authenticationEntryPoint(entryPoint()) .and() .authorizeUrls() .anyRequest().authenticated() .and() .httpBasic(); }
经验分享 程序员 微信小程序 职场和发展