siye@r480:~/svlution/workspace/springcore4322$ tree src/
src/
├── main
│ ├── java
│ │ ├── log4j.properties
│ │ └── ocn
│ │ └── site
│ │ └── springioc
│ │ ├── domain
│ │ │ ├── Person.java
│ │ │ └── User.java
│ │ └── setup
│ │ └── Appconfig.java
│ └── resources
└── test
├── java
│ └── ocn
│ └── site
│ └── springioc
│ └── domain
│ └── Runtest.java
└── resources
15 directories, 5 files
< dependency>
< groupId> org.springframework</ groupId>
< artifactId> spring-context</ artifactId>
< version> 4.3.22.RELEASE</ version>
</ dependency>
< dependency>
< groupId> log4j</ groupId>
< artifactId> log4j</ artifactId>
< version> 1.2.17</ version>
</ dependency>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< version> 4.12</ version>
< scope> test</ scope>
</ dependency>
< dependency>
< groupId> org.springframework</ groupId>
< artifactId> spring-test</ artifactId>
< version> 4.3.22.RELEASE</ version>
< scope> test</ scope>
</ dependency>
package ocn. site. springioc. domain;
import org. springframework. stereotype. Component;
@Component ( "obj" )
public class Person {
private int id;
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
}
package ocn. site. springioc. domain;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. beans. factory. annotation. Qualifier;
import org. springframework. stereotype. Component;
@Component
public class User {
private @Autowired @Qualifier ( "person" ) Person person;
public Person getPerson ( ) {
return person;
}
public void setPerson ( Person person) {
this . person = person;
}
}
package ocn. site. springioc. setup;
import org. springframework. context. annotation. Bean;
import org. springframework. context. annotation. ComponentScan;
import org. springframework. context. annotation. Configuration;
import ocn. site. springioc. domain. Person;
@Configuration
@ComponentScan ( { "ocn.site.springioc.domain" } )
public class Appconfig {
@Bean ( "person" )
public Person getPerson ( ) {
Person person = new Person ( ) ;
person. setId ( - 1 ) ;
return person;
}
}
package ocn. site. springioc. domain;
import org. apache. log4j. Logger;
import org. junit. Test;
import org. junit. runner. RunWith;
import org. springframework. beans. factory. annotation. Autowired;
import org. springframework. context. ApplicationContext;
import org. springframework. test. context. ContextConfiguration;
import org. springframework. test. context. junit4. SpringRunner;
import ocn. site. springioc. setup. Appconfig;
@RunWith ( SpringRunner. class )
@ContextConfiguration ( classes = Appconfig. class )
public class Runtest {
private final Logger logger = Logger. getLogger ( this . getClass ( ) ) ;
private @Autowired ApplicationContext context;
@Test
public void run ( ) throws Exception {
logger. info ( context. getBean ( "obj" , Person. class ) . getId ( ) ) ;
logger. info ( context. getBean ( User. class ) . getPerson ( ) . getId ( ) ) ;
}
}
19-09-09 10:27:58 org.springframework.test.context.support.DefaultTestContextBootstrapper =====>>> Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
19-09-09 10:27:58 org.springframework.test.context.support.DefaultTestContextBootstrapper =====>>> Using TestExecutionListeners: [org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@3b81a1bc, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@64616ca2, org.springframework.test.context.support.DirtiesContextTestExecutionListener@13fee20c]
19-09-09 10:27:58 org.springframework.context.support.GenericApplicationContext =====>>> Refreshing org.springframework.context.support.GenericApplicationContext@3a82f6ef: startup date [Mon Sep 09 10:27:58 CST 2019]; root of context hierarchy
19-09-09 10:27:58 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor =====>>> JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
19-09-09 10:27:59 ocn.site.springioc.domain.Runtest =====>>> 0
19-09-09 10:27:59 ocn.site.springioc.domain.Runtest =====>>> -1
19-09-09 10:27:59 org.springframework.context.support.GenericApplicationContext =====>>> Closing org.springframework.context.support.GenericApplicationContext@3a82f6ef: startup date [Mon Sep 09 10:27:58 CST 2019]; root of context hierarchy