代码之家  ›  专栏  ›  技术社区  ›  schoon

如何将此代码从Spring转换为Spring boot?

  •  3
  • schoon  · 技术社区  · 6 年前

    我剪切并粘贴了一个MVC Mitreid Spring Web应用程序到一个基本的引导Web应用程序中。当我尝试运行它时,我得到:

    A component required a bean named 'namedAdmins' that could not be found
    

    代码是:

    import org.mitre.openid.connect.client.OIDCAuthenticationFilter;
    import org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority;
    @RestController
    public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    @Autowired
    private OIDCAuthenticationFilter filter;
    
    @Resource(name = "namedAdmins")
    private Set<SubjectIssuerGrantedAuthority> admins;
    
    @RequestMapping(value = "/", method = RequestMethod.GET)
    

    这只是我将@controller更改为@restcontroller时的Spring代码。

    这在servlet-context.xml中:

    <bean id="openIdConnectAuthenticationProvider" class="org.mitre.openid.connect.client.OIDCAuthenticationProvider">
        <property name="authoritiesMapper">
            <bean class="org.mitre.openid.connect.client.NamedAdminAuthoritiesMapper">
                <property name="admins" ref="namedAdmins" />
            </bean>
        </property>
    </bean>
    
    <util:set id="namedAdmins" value-type="org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority">
    
        <bean class="org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority">
            <constructor-arg name="subject" value="90342.ASDFJWFA" />
            <constructor-arg name="issuer" value="http://192.168.1.114:8080/openid-connect-server-webapp/" />
        </bean>
    </util:set>
    

    有谁能让我开始了解我还需要改变什么/在哪里寻找让豆子得到认可? 这是我的意思:

    <dependency>
        <groupId>org.mitre</groupId>
        <artifactId>openid-connect-client</artifactId>
        <version>1.3.1</version>
    </dependency>
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Karol Dowbecki    6 年前

    很可能是你的 servlet-context.xml 不包括在Spring引导应用程序中。要么用导入 @ImportResource 注释

    @SpringBootApplication
    @ImportResource("servlet-context.xml")
    public class MyApp {
      // ...
    }
    

    或者将XML转换为新的Java配置类,这将是首选的方法:

    @Configuration
    public class MitreConfig {
    
      @Bean
      public Set<SubjectIssuerGrantedAuthority> namedAdmins() {
        // ...
      }
    
    }
    
    推荐文章