2021年4月25日星期日

How to prevent @SpringBootScanApplications(scanbase="package") avoiding interfaces?

So I was running a Springboot application then I got this error

***************************  APPLICATION FAILED TO START  ***************************    Description:    A component required a bean of type 'sample.ArticledDao' that could not be found.      Action:    Consider defining a bean of type 'sample.ArticledDao' in your configuration.    

Then I checked how SpringBoot scans the files and I saw some of the files are ignored What component scan shows

This is how the path looks ( It's not ideal I know) :

path

This is the code of my Main class :

@SpringBootApplication(scanBasePackages="sample")  @EnableJpaRepositories("sample")  public class Main {          public static void main(String[] args) throws Exception {          SpringApplication.run(Main.class, args);      }  }  

This is my ArticlesDao class:

public interface ArticledDao {      List<Articles> findAll();        public void deleteArticles(Articles articles);  }  

ArticleSercviceImp class

@Component  public class ArticleSericeImp implements ArticlesServices  {      @Autowired      ArticledDao articleDao;      @Override      public List<Articles> findAll() {          return articleDao.findAll();      }        @Override      public void deleteEmployee(Articles art) {           articleDao.deleteArticles(art);      }    

ArticleRepository:

@Repository  public  class ArticlesRepository implements ArticledDao{        public ArticlesRepository(NamedParameterJdbcTemplate template) {          this.template = template;      }  NamedParameterJdbcTemplate template;        @Override      public List<Articles> findAll() {          return template.query("select * from article", new ArticlesRowMapper());      }        @Override      public void deleteArticles(Articles articles) {          final String sql = "delete from article where articleid=:articleid";          Map<String,Object> map=new HashMap<String,Object>();          map.put("articleid", articles.getId());            template.execute(sql,map,new PreparedStatementCallback<Object>() {              @Override              public Object doInPreparedStatement(PreparedStatement ps)                      throws SQLException, DataAccessException {                  return ps.executeUpdate();              }          });          }            }  
<?xml version="1.0" encoding="UTF-8"?>  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">      <modelVersion>4.0.0</modelVersion>      <parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>2.4.5</version>          <relativePath/> <!-- lookup parent from repository -->      </parent>      <groupId>com.example</groupId>      <artifactId>sprinboot_project</artifactId>      <version>0.0.1-SNAPSHOT</version>      <name>Sprinboot_Project</name>      <description>Demo project for Spring Boot</description>      <properties>          <java.version>8</java.version>      </properties>      <dependencies>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter</artifactId>          </dependency>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-web</artifactId>          </dependency>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-jdbc</artifactId>          </dependency>          <dependency>              <groupId>org.postgresql</groupId>              <artifactId>postgresql</artifactId>              <scope>runtime</scope>          </dependency>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-test</artifactId>              <scope>test</scope>          </dependency>          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-jdbc</artifactId>          </dependency>          <dependency>              <groupId>org.springframework.data</groupId>              <artifactId>spring-data-jpa</artifactId>              <version>2.3.0.RELEASE</version>            </dependency>          <dependency>              <groupId>org.hibernate</groupId>              <artifactId>hibernate-entitymanager</artifactId>              <version>5.4.29.Final</version>          </dependency>      </dependencies>          <build>          <pluginManagement>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>                  <configuration>                      <excludes>                          <exclude>                              <groupId>org.projectlombok</groupId>                              <artifactId>lombok</artifactId>                          </exclude>                      </excludes>                  </configuration>              </plugin>              <plugin>                  <groupId>org.apache.maven.plugins</groupId>                  <artifactId>maven-compiler-plugin</artifactId>                  <version>3.8.1</version>                  <configuration>                      <source>1.8</source>                      <target>1.8</target>                  </configuration>              </plugin>          </plugins>          </pluginManagement>          <resources>              <resource>                  <directory>src/main/resources</directory>                  <filtering>true</filtering>              </resource>          </resources>      </build>    </project>    

I'm new to SpringBoot so I would be very grateful for your help.

https://stackoverflow.com/questions/67246511/how-to-prevent-springbootscanapplicationsscanbase-package-avoiding-interfac April 25, 2021 at 03:07AM

没有评论:

发表评论