繁体   English   中英

在Spring Boot应用程序中使用@Bean声明bean

[英]declare bean with @Bean in spring boot application

我刚刚开始使用Spring(启动)。

我在abc.de有“主”类, abc.de@SpringApplication注释。

到目前为止,一切正常。 我只使用了构造型注释。

现在,我想将@Bean@Configuration类一起使用,以了解其工作方式。

我的@Configuration类:

@Configuration
public class BeanConfiguration {

    @Bean
    public XslDataFileLoader dataSource() {
        return new XslDataFileLoader();
    }
}

XslDataFileLoader类在同一包中。

我在控制器类中使用@Autowired声明了这个bean。

因此,我的“主”类位于abc.de ,配置类位于abc.de.config ,而XslDataFileLoader也位于abc.de.config中。

当我启动应用程序时,spring无法注入bean。 找不到它。

我尝试了scanPackages = abc.de.config :这样,就找不到我的其他bean。

我该如何在最新的Spring Boot中声明这一点?

编辑

堆栈跟踪:

2017-05-19 13:52:03 ERROR o.s.b.d.LoggingFailureAnalysisReporter - 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field dataSource in abc.de.controllers.LoginController required a bean of type 'abc.de.config.XslDataFileLoader' that could not be found.


Action:

Consider defining a bean of type 'abc.de.config.XslDataFileLoader' in your configuration.

XslDataFileLoader:

package abc.de.config;

public class XslDataFileLoader {
    public XslDataFileLoader() {

    }
}

LoginController:

package abc.de.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import abc.de.config.XslDataFileLoader;

@Controller
public class LoginController {

    @Autowired
    XslDataFileLoader loader;

    @GetMapping("/login")
    public String login() {
        System.out.println(loader);
        return "login";
    }

    @PostMapping("/login")
    public String loginTry() {
        return "redirect:dashboard";
    }
}

第二编辑

MySpringBootApplication:

package abc.de;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@EnableJpaRepositories
public class MySpringBootApplication{

    public static void main(final String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

application.properties:

server.port=5566
spring.application.name=@project.name@
# data source
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=root
spring.datasource.password=
# Session
spring.session.store-type=none
# Security
security.basic.enabled=false

# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
logging.level.=error

首先,请发布所有代码和stacktrace。

BeanConfiguration类已正确配置,因此注入可能出问题了。

XslDataFileLoader类上是否有注释? 这可能是双重bean声明的问题,而不是找不到bean(如果您在XslDataFileLoader上同时具有@Component并同时在BeanConfiguration对其进行了BeanConfiguration

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM