https://*.com/questions/40384056/consider-defining-a-bean-of-type-package-in-your-configuration-spring-boot
http://blog.csdn.net/u012049760/article/details/70691925
Your Applicant class is not scanned it seems. By default all packages starting with the root as the class where you have put @SpringBootApplication
will be scanned.
suppose your main
class "WebServiceApplication" is in "com.service.something
", then all components that fall under "com.service.something
" is scanned, and "com.service.applicant
" will not be scanned.
You can either restructure your packages such that "WebServiceApplication" falls under a root package and all other components becomes part of that root package. Or you can include @SpringBootApplication(scanBasePackages={"com.service.something","com.service.application"})
etc such that "ALL" components are scanned and initialized in the spring container.
Update based on comment
If you have multiple modules that are being managed by maven/gradle, all spring needs is the package to scan. You tell spring to scan "com.module1" and you have another module which has its root package name as "com.module2", those components wont be scanned. You can even tell spring to scan "com" which will then scan all components in "com.module1.
" and "com.module2.
"
I am not sure if it is because I have my project broke down in modules but this is how I solved my issue of not be able to find my repositories.
|
- java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5033 -Dgrpc.port=6033 -Dserver.port=8033 -jar target/demo-1.0-SNAPSHOT.jar
- Listening for transport dt_socket at address: 5033
- target/demo-1.0-SNAPSHOT.jar中没有主清单属性
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- mvn clean install -DskipTests
- [INFO] Scanning for projects...
- [ERROR] [ERROR] Some problems were encountered while processing the POMs:
- [ERROR] Malformed POM /Users/********/Documents/workspace/pom.xml: Unrecognised tag: 'plugin' (position: START_TAG seen ...</repositories>\n\n <plugin>... @38:13) @ /Users/********/Documents/workspace/pom.xml, line 38, column 13
- @
- [ERROR] The build could not read 1 project -> [Help 1]
- [ERROR]
- [ERROR] The project com.mobike:demo:1.0-SNAPSHOT (/Users/********/Documents/workspace/pom.xml) has 1 error
- [ERROR] Malformed POM /Users/********/Documents/workspace/pom.xml: Unrecognised tag: 'plugin' (position: START_TAG seen ...</repositories>\n\n <plugin>... @38:13) @ /Users/********/Documents/workspace/pom.xml, line 38, column 13 -> [Help 2]
- [ERROR]
- [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
- [ERROR] Re-run Maven using the -X switch to enable full debug logging.
- [ERROR]
- [ERROR] For more information about the errors and possible solutions, please read the following articles:
- [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
- [ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/ModelParseException
- package config;
- import com.alibaba.druid.pool.DruidDataSource;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.mybatis.spring.SqlSessionFactoryBean;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.Resource;
- import org.springframework.core.io.support.ResourcePatternResolver;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.stereotype.Repository;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;import javax.sql.DataSource;
- import java.io.IOException;import java.sql.SQLException;import java.util.ArrayList;
- import java.util.Arrays;import java.util.List;
- @Slf4j
- @Configuration
- @MapperScan(basePackages = {
- "dao",}, annotationClass = Repository.class, sqlSessionFactoryRef = SysUserAuthDaoConfig.SQL_SESSION_FACTORY_NAME)
- public class SysUserAuthDaoConfig {
- public static final String SQL_SESSION_FACTORY_NAME = "opsSqlSessionFactory";
- @Value("${ops.database.username}")
- private String username;
- @Value("${ops.database.password}")
- private String password;
- @Value("${ops.database.url}")
- private String url;
- @Value("classpath:mybatis.userinfo/*.xml")
- private String mapperLocation;
- private DruidDataSource dataSource;
- private DataSourceTransactionManager transactionManager;
- private SqlSessionFactory sqlSessionFactory;
- @Autowired private ResourcePatternResolver resourceResolver;
- public String getUsername() {
- return username; }
- public void setUsername(String username) {
- this.username = username; }
- public String getPassword() {
- return password; }
- public void setPassword(String password) {
- this.password = password; }
- public String getUrl() {
- return url; }
- public void setUrl(String url) {
- this.url = url; }
- public String getMapperLocation() {
- return mapperLocation; }
- public void setMapperLocation(String mapperLocation) {
- this.mapperLocation = mapperLocation; }
- public String[] getMapperLocations() {
- String[] mapperLocations = new String[1]; mapperLocations[0] = getMapperLocation(); return mapperLocations; }
- @PostConstruct public void init() {
- try {
- log.info("Init datasource: url: {}", url); dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setTestWhileIdle(true); dataSource.setTestOnReturn(false); dataSource.init();
- transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(dataSource); log.info("Init done"); } catch (Throwable t) {
- log.error("Init error", t); }
- }
- @PreDestroy public void destroy() {
- try {
- log.info("Close {}", url); dataSource.close(); log.info("Close {} done", url); } catch (Throwable t) {
- log.error("Destroy error", t); }
- }
- @Bean(name = SQL_SESSION_FACTORY_NAME)
- public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
- if (sqlSessionFactory == null) {
- SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); org.apache.ibatis.session.Configuration
- config = new org.apache.ibatis.session.Configuration(); config.setMapUnderscoreToCamelCase(true); sqlSessionFactoryBean.setConfiguration(config); sqlSessionFactoryBean.setDataSource(dataSource); List<Resource> resources = new ArrayList<>(); if (this.getMapperLocations() != null) {
- for (String mapperLocation : this.getMapperLocations()) {
- try {
- Resource[] mappers = resourceResolver.getResources(mapperLocation); resources.addAll(Arrays.asList(mappers)); } catch (IOException e) {
- log.error("IOException", e); return null; }
- }
- }
- Resource[] arr = resources.toArray(new Resource[resources.size()]); sqlSessionFactoryBean.setMapperLocations(arr); sqlSessionFactory = sqlSessionFactoryBean.getObject(); }
- return sqlSessionFactory; }
- @Bean("sysUserAuthJdbcTemplate")
- public JdbcTemplate jdbcTemplate() {
- return new JdbcTemplate(this.dataSource); }
- @Bean("sysUserAuthDataSource")
- public DataSource getDatabase() throws SQLException {
- return dataSource; }
- @Bean("sysUserAuthTransactionManager")
- public DataSourceTransactionManager transactionManager() {
- return transactionManager; }
- }
- Description:
- Field userInfoMapper in service.UserInfoServiceimpl required a bean of type 'dao.UserInfoMapper' that could not be found.
- Action:
- Consider defining a bean of type 'dao.UserInfoMapper' in your configuration.