Spring Boot中的预定义bean

时间:2016-03-25 12:51:25

标签: java spring spring-security spring-boot

我想创建一个基于Spring Boot构建的简单应用程序。我对框架没有经验,这个问题超出了我的范围。

我想在我的应用中使用安全模块,尤其是org.springframework.security.authentication.encoding.ShaPasswordEncoder类。我想把它作为一个bean自动装配。

如何在Spring Boot中定义它?例如,this answer解释了如何在“常规”Spring中使用它 - 在XML文件中定义bean。但是,当我阅读Boot概述时,它表示不需要XML设置,因此是否有可能以某种方式在代码中执行此操作,而不是配置?什么是Boot-ish方式?

我试过使用这段代码来获取编码器类。

@Autowired
private ShaPasswordEncoder passwordEncoder;

但我得到一个例外:org.springframework.beans.factory.NoSuchBeanDefinitionException - 它没有定义,但我该如何定义呢?

由于

1 个答案:

答案 0 :(得分:2)

bean可以像这样定义代码:

using (StreamReader sr = new StreamReader(sFile))
{
    XmlSerializer deserializer = new XmlSerializer(typeof(List<Lijst_item>), new XmlRootAttribute("lijst"));
    var Test = (List<Lijst_item>)deserializer.Deserialize(sr);
}

此方法将创建一个名为“passwordEncoder”的bean,该bean将由Spring管理。它相当于XML样式的

@Bean
public ShaPasswordEncoder passwordEncoder() {
    return new ShaPasswordEncoder();
}

您可以将此方法放在<bean class="org.springframework.security.authentication.encoding.ShaPasswordEncoder" id="passwordEncoder" /> - 带注释的类或任何使用@SpringBootApplication注释的类中。

More info here