¿Cómo escanear paquetes que no están en SRC / PRINCIPAL / JAVA? -- java campo con spring campo con maven campo con spring-boot campo con spring-tool-suite camp Relacionados El problema

How to scan packages which are not in src/main/java?


-1
vote

problema

Español

Preguntó el entrevistador, ¿cómo va a escanear paquetes que no estén en la SRC / PRINCIPAL / JAVA ... es decir, ... su Classpath. También dijo que esta es una situación muy rara cuando tienes que hacer este tipo de cosas.

Original en ingles

Interviewer asked, How will you scan packages which are not in the src/main/java .. ie.. your classpath. He also said that this is very rare situation when you have to do this type of things.

              
   
   

Lista de respuestas

1
 
vote

En la bota de resortes de forma predeterminada, todas las clases en el paquete donde reside la clase principal de la aplicación, se escanean el componente. Por ejemplo, supongamos que su principal application.java está en src/main/java y en el paquete com.example . Por lo tanto, Springboot escaneará todas las clases debajo del paquete com.example.* , por lo que si sus otras jerarquías del paquete están debajo de su aplicación principal con la anotación @ComponentScan({"com.example1" ," com.example2" }) @SpringBootApplication public class SpringbootMainApplication { public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(SpringbootMainApplication.class, args); } } 4 , está cubierto por componentes implícitos. Si hay frijoles / componentes en otros paquetes que no son paquetes secundarios del paquete principal, debe agregarlos manualmente como @ComponentScan como:

  @ComponentScan({"com.example1" ," com.example2" }) @SpringBootApplication public class SpringbootMainApplication { public static void main(String[] args) {         ApplicationContext applicationContext =                  SpringApplication.run(SpringbootMainApplication.class, args);     }  }   

Aparte de esto, el @ComponentScan se puede proporcionar una anotación junto con @Configuration clases anotadas para decirle a Spring para escanear paquetes. @ComponentScan Sin argumentos DIGA LA SPRENTE Para escanear el paquete actual y todos sus sub -ackages. Como:

  src/main/java0  

Supongamos que la clase src/main/java1111 está dentro del paquete src/main/java2 , luego Spring escaneará todas las clases en el paquete y en los Sub Paquetes si corresponde.

 

In spring-boot by default all classes under the package where the main application class resides are component scanned. For instance suppose your main application.java is under src/main/java and in package com.example. So springboot will scan all classes under the package com.example.* So if your other package hierarchies are below your main app with the @SpringBootApplication annotation, youxe2x80x99re covered by implicit components scan. If there are beans/components in other packages which are not sub packages of the main package, you should manually add them as @ComponentScan like :

@ComponentScan({xe2x80x9ccom.example1xe2x80x9d,xe2x80x9dcom.example2xe2x80x9d}) @SpringBootApplication public class SpringbootMainApplication { public static void main(String[] args) {         ApplicationContext applicationContext =                  SpringApplication.run(SpringbootMainApplication.class, args);     }  } 

Apart from this the @ComponentScan annotation can also be provided along with @Configuration annotated classes to tell spring to scan packages. @ComponentScan without arguments tells Spring to scan the current package and all of its sub-packages.Like :

@Configuration @ComponentScan public class SpringGenericConfiguration {     @Bean     public ExampleBean exampleBean() {      return new ExampleBean();     } } 

Suppose the class SpringGenericConfiguration.java is inside package com.example20.configuration , then spring will scan all classes in the package and in the sub packages if any.

 
 
         
         
1
 
vote

Creo que necesita agregar carpetas manualmente en su ruta de construcción de Java antes de agregarlas a un escaneo de componentes. Si está utilizando Eclipse, hay una manera de agregarlos en la ruta de construcción haciendo clic derecho en Proyecto - & GT; propiedades - & gt; Java Build Ruta - & gt; fuente. Debe agregar la ruta a src/main/java3 aquí y habilitarlo para que se reconozca como una carpeta de origen. Luego, debe usar @Componentscan para escanear los paquetes relevantes. Lo clave aquí es obtener su código relevante en el Classpath.

Un escenario. Puedo pensar en dónde podría necesitar que ese tipo de cambios tenga una fuente generada en src/main/java4 y debe usar esos talones o frijoles para desarrollar su código.

 

I think you need to add folders manually into your java build path before adding them into component scan. If you are using Eclipse, there is a way to add them in build path by right clicking on project -> properties -> java build path -> source. You need to add the path to src/<path to your additional source> here and enable it so that it is recognized as a source folder. Then you need to use @ComponentScan to scan for the relevant packages. Key thing here is to get your relevant code into the classpath.

One scenario i can think of where you would potentially need such kind of changes would be having some generated sources under target/generated-sources and you need to use those stubs or beans to develop your code.

 
 
0
 
vote

La respuesta más simple y más corta es que los escanea utilizando exactamente de la misma manera, no importa si la clase o el paquete está dentro de SRC / PRINCIPAL / JAVA, al menos debería estar en Classpath para que JVM lo sepa y lo ha cargado.

Si la pregunta de la OP significa que el paquete no está en el Classpath en absoluto diciendo:

que no están en la SRC / PRINCIPAL / JAVA. IE .. SUS CLASSPATH

La pregunta no puede tener sentido, por qué escanear un paquete que no está en JVM Classpath. Incluso si usted podría escanearlo, no podrá usarlo ya que no está cargado.

 

The simplest and shortest answer is that you scan them using exactly the same way, it doesn't matter if the class or package is inside src/main/java, at least it should be in classpath so JVM knows about it and has loaded it.

IF the OP's question means that the package is not at the classpath at all by saying:

which are not in the src/main/java .. ie.. your classpath

The question cannot make sense, why to scan a package that is not in JVM classpath. Even if you could scan it you wouldn't be able to use it as it is not loaded.

 
 
     
     

Relacionados problema

5  ¿Cuáles pueden ser las razones por las que cuelga Spring STS?  ( What can be the reasons that spring sts hangs ) 
A veces en el principio STS se cuelga. ¿Se puede encontrar la razón? ¿Se puede existir el registro o el posible inicio en modo de depuración? Además, ¿cómo ...

3  Guía de inicio de la suite de la herramienta de primavera no funciona  ( Spring tool suite getting started guide does not work ) 
Estoy tratando de hacer la "Guía de preparación con STS" (aquí: http: //spring.io/guides/gs/sts/ ) Uso de la suite de herramientas de primavera (STS) (Versió...

0  El servidor pivotal está colgado al intentar comenzar  ( Pivotal server is hanging when trying to start ) 
La computadora es la edición familiar de Windows7 64bit. Descomprimí la Spring-Tool-Suite-Suite 3.8.1, hay JDK 1.8 y JRE 1.6, Java_Home está en JRE 1.6 porque...

0  Dependencias no descargadas en Suite de herramientas de primavera  ( Dependencies not downloaded in spring tool suite ) 
Estoy creando un proyecto de arranque de resorte con la suite de la herramienta de primavera. Seleccioné las dependencias de la base de datos JPA, Web y Derby...

0  Siempre consigue 404 aunque no veo nada malo en mi proyecto Hello-World Spring MVC  ( Always get 404 though i dont see anything wrong in my hello world spring mvc pr ) 
He configurado un tipo de proyecto MVC Hello-World MVC MVC. Pero cuando lo ejecuto en Tomcat, siempre obtengo 404. Pasé horas, no puedo averiguar dónde lo hic...

0  La estructura del proyecto cambió después del proyecto de actualización de Maven, los patrones de inclusión y exclusión para la carpeta de origen también cambió  ( Project structure changed after maven update project inclusion and exclusion pa ) 
Esta es la estructura del proyecto desarrollada inicialmente: src/ src/main/java com.company.project.module1.bean com.company.project.module1.contr...

3  GGTS Nombre del método repetitivo / Error de firma en los controladores  ( Ggts repetitive method name signature error in controllers ) 
Estoy usando el último GGTS V3.4 basado en la versión de Eclipse 4.3.1 64bit para la aplicación de desarrollo en Grail 2.3.2. Cada controlador que está en mi ...

0  ¿Cómo alternar "Mostrar monitores" en la vista de depuración STS (Spring Tool Suite)?  ( How to toggle show monitors in sts spring tool suite debug view ) 
Para mejorar las actuaciones de depuración remota, siguiendo este Así que el hilo estoy tratando de deshabilitar en STS (no simple eclipse) los "Mostrar mon...

2  CTRL + ALT + ABAJO / UP no duplica la línea en la suite de la herramienta de primavera, ¿cómo solucionarlo?  ( Ctrlaltdown up does not duplicates line in spring tool suite how to fix it ) 
Suite de herramientas de primavera Aunque basado en Eclipse, no duplica la línea usando la combinación de teclas habitual NP_001239382 NP_001074602 NP_001230...

0  No se puede agregar proyecto a Tomcat Server en la suite de la herramienta de primavera  ( Can not add project to tomcat server in spring tool suite ) 
Estoy usando la versión de Spring Tool Suite 4: 4.4.2.Release. He creado un nuevo proyecto Maven con el siguiente POM: <project xmlns="http://maven.apach...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos