1. @bean html
2. @Controller, @Service, @Component .....等配合@ComponentScanjava
3. @Configuration 配合@EnableAutoConfigurationspring
4. @Import(Class<?>[] values)bash
//Teacher是一個普通的java類,沒有任何註解修飾 @Import(Teacher.class) @EnableEurekaClient @SpringBootApplication public class ApplicationClientOne { public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(ApplicationClientOne.class, args); System.out.println("================================================================================"); System.out.println(run.getBean(Teacher.class).toString()); } } public class Teacher { private String name = "123"; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Teacher{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
啓動日誌:app
2018-08-17 15:18:29.481 INFO 113988 --- [ main] c.r.a.one.ApplicationClientOne : Started ApplicationClientOne in 15.53 seconds (JVM running for 16.384) ================================================================================ Teacher{name='123', age=null} 2018-08-17 15:18:29.808 INFO 113988 --- [on(8)-127.0.0.1] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:7001
5. 實現接口 ImportSelectoride
public interface ImportSelector { /** * Select and return the names of which class(es) should be imported based on * the {@link AnnotationMetadata} of the importing @{@link Configuration} class. */ String[] selectImports(AnnotationMetadata importingClassMetadata); }
使用方法:post
public class TestImportSelect implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { return new String[]{"com.river.application.one.test.Teacher"}; } }
這樣,就已經將該java類交由spring管理了,能夠經過getBean()方法獲得;this
6. 利用spring的鉤子接口 BeanDefinitionRegistryPostProcessorspa
@Component public class TestBeanRegister implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(); rootBeanDefinition.setBeanClass(Teacher.class); registry.registerBeanDefinition("teacher",rootBeanDefinition); } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { } }
7. spring.factories.net
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.river.application.one.test.Teacher