├── .gitignore ├── LICENSE ├── spring-00-introduction ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── architecture │ │ ├── a_original │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ └── DemoServiceImpl.java │ │ └── servlet │ │ │ └── DemoServlet1.java │ │ ├── b_factory │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ ├── DemoDaoImpl.java │ │ │ │ ├── DemoMySQLDao.java │ │ │ │ └── DemoOracleDao.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ └── servlet │ │ │ └── DemoServlet2.java │ │ ├── c_reflect │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ └── DemoServiceImpl.java │ │ └── servlet │ │ │ └── DemoServlet3.java │ │ ├── d_properties │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ └── DemoServiceImpl.java │ │ └── servlet │ │ │ └── DemoServlet4.java │ │ ├── e_cachedfactory │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ └── DemoServiceImpl.java │ │ └── servlet │ │ │ └── DemoServlet5.java │ │ ├── f_pointslog │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ └── servlet │ │ │ └── DemoServlet6.java │ │ ├── g_logutils │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ │ └── DemoServlet7.java │ │ └── utils │ │ │ └── LogUtils.java │ │ ├── h_decorator │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ ├── decorator │ │ │ │ └── DemoServiceDecorator.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ │ └── DemoServlet8.java │ │ └── utils │ │ │ └── LogUtils.java │ │ ├── i_template │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── AbstractDemoService.java │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ │ └── DemoServlet9.java │ │ └── utils │ │ │ └── LogUtils.java │ │ ├── j_proxy │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ │ └── DemoServlet10.java │ │ └── utils │ │ │ └── LogUtils.java │ │ ├── k_filtermethod │ │ ├── dao │ │ │ ├── DemoDao.java │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ │ └── BeanFactory.java │ │ ├── service │ │ │ ├── DemoService.java │ │ │ └── impl │ │ │ │ ├── DemoServiceImpl.java │ │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ │ └── DemoServlet11.java │ │ └── utils │ │ │ └── LogUtils.java │ │ └── l_proxyfactory │ │ ├── dao │ │ ├── DemoDao.java │ │ └── impl │ │ │ └── DemoDaoImpl.java │ │ ├── factory │ │ └── BeanFactory.java │ │ ├── proxy │ │ └── LogAdvisor.java │ │ ├── service │ │ ├── DemoService.java │ │ └── impl │ │ │ ├── DemoServiceImpl.java │ │ │ └── DemoServiceImpl2.java │ │ ├── servlet │ │ └── DemoServlet12.java │ │ └── utils │ │ └── LogUtils.java │ └── resources │ ├── factory_d.properties │ ├── factory_e.properties │ ├── factory_f.properties │ ├── factory_g.properties │ ├── factory_h.properties │ ├── factory_i.properties │ ├── factory_j.properties │ ├── factory_k.properties │ ├── factory_l.properties │ └── proxy.properties ├── spring-01-ioc ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ ├── annotation │ │ ├── a_quickstart │ │ │ ├── AnnotationConfigApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── QuickstartConfiguration.java │ │ ├── b_di │ │ │ ├── AnnotationDIApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── AnnotationDIConfiguration.java │ │ ├── c_scan │ │ │ ├── ComponentScanApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── ComponentScanConfiguration.java │ │ ├── d_importxml │ │ │ ├── ImportXmlAnnoApplication.java │ │ │ └── config │ │ │ │ ├── AnnotationConfigConfiguration.java │ │ │ │ └── ImportXmlAnnotationConfiguration.java │ │ ├── e_basepackageclass │ │ │ ├── BasePackageClassApplication.java │ │ │ ├── bean │ │ │ │ ├── DemoDao.java │ │ │ │ └── DemoService.java │ │ │ ├── component │ │ │ │ ├── DemoComponent.java │ │ │ │ └── inner │ │ │ │ │ └── InnerComponent.java │ │ │ └── config │ │ │ │ └── BasePackageClassConfiguration.java │ │ ├── f_typefilter │ │ │ ├── TypeFilterApplication.java │ │ │ ├── animals │ │ │ │ ├── Cat.java │ │ │ │ ├── Dog.java │ │ │ │ └── Pikachu.java │ │ │ ├── anno │ │ │ │ └── Animal.java │ │ │ ├── bean │ │ │ │ ├── DemoDao.java │ │ │ │ └── DemoService.java │ │ │ ├── color │ │ │ │ ├── Color.java │ │ │ │ ├── Green.java │ │ │ │ ├── Red.java │ │ │ │ └── Yellow.java │ │ │ ├── config │ │ │ │ └── TypeFilterConfiguration.java │ │ │ └── filter │ │ │ │ └── GreenTypeFilter.java │ │ ├── g_propertysource │ │ │ ├── PropertySourcePropertiesApplication.java │ │ │ ├── bean │ │ │ │ └── JdbcProperties.java │ │ │ └── config │ │ │ │ └── JdbcPropertiesConfiguration.java │ │ ├── h_propertyxml │ │ │ ├── PropertySourceXmlApplication.java │ │ │ ├── bean │ │ │ │ └── JdbcXmlProperty.java │ │ │ └── config │ │ │ │ └── JdbcXmlConfiguration.java │ │ └── i_propertyyml │ │ │ ├── PropertySourceYmlApplication.java │ │ │ ├── bean │ │ │ └── JdbcYmlProperty.java │ │ │ ├── config │ │ │ └── JdbcYmlConfiguration.java │ │ │ └── factory │ │ │ └── YmlPropertySourceFactory.java │ │ ├── basic_di │ │ ├── a_quickstart_set │ │ │ ├── QuickstartInjectBySetAnnoApplication.java │ │ │ ├── QuickstartInjectBySetXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── QuickstartInjectBySetConfiguration.java │ │ ├── b_constructor │ │ │ ├── InjectByConstructorAnnoApplication.java │ │ │ ├── InjectByConstructorXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── InjectByConstructorConfiguration.java │ │ ├── c_value_spel │ │ │ ├── InjectValueAnnoApplication.java │ │ │ ├── InjectValueXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Black.java │ │ │ │ ├── Blue.java │ │ │ │ ├── Green.java │ │ │ │ ├── Red.java │ │ │ │ ├── White.java │ │ │ │ └── Yellow.java │ │ │ └── config │ │ │ │ └── InjectValueConfiguration.java │ │ ├── d_autowired │ │ │ ├── AutowiredApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ ├── Dog.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── AutowiredConfiguration.java │ │ ├── e_jsr250 │ │ │ ├── JSR250Application.java │ │ │ ├── bean │ │ │ │ ├── Bird.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── JSR250Configuration.java │ │ ├── f_jsr330 │ │ │ ├── JSR330Application.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── JSR330Configration.java │ │ ├── g_complexfield │ │ │ ├── ComplexFieldAnnoApplication.java │ │ │ ├── ComplexFieldXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ ├── Person.java │ │ │ │ └── Person2.java │ │ │ └── config │ │ │ │ └── InjectComplexFieldConfiguration.java │ │ ├── h_aware │ │ │ ├── AwareApplication.java │ │ │ ├── bean │ │ │ │ └── AwaredTestBean.java │ │ │ └── config │ │ │ │ └── AwareConfiguration.java │ │ └── i_lazyinject │ │ │ ├── LazyInjectAnnoApplication.java │ │ │ └── bean │ │ │ ├── Dog.java │ │ │ └── Person.java │ │ ├── basic_dl │ │ ├── a_quickstart_byname │ │ │ ├── QuickstartByNameApplication.java │ │ │ └── bean │ │ │ │ └── Person.java │ │ ├── b_bytype │ │ │ ├── QuickstartByTypeApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ └── dao │ │ │ │ ├── DemoDao.java │ │ │ │ └── impl │ │ │ │ └── DemoDaoImpl.java │ │ ├── c_oftype │ │ │ ├── OfTypeApplication.java │ │ │ └── dao │ │ │ │ ├── DemoDao.java │ │ │ │ └── impl │ │ │ │ ├── DemoMySQLDao.java │ │ │ │ ├── DemoOracleDao.java │ │ │ │ └── DemoPostgresDao.java │ │ ├── d_withanno │ │ │ ├── WithAnnoApplication.java │ │ │ ├── anno │ │ │ │ └── Color.java │ │ │ └── bean │ │ │ │ ├── Black.java │ │ │ │ ├── Dog.java │ │ │ │ └── Red.java │ │ ├── e_beannames │ │ │ └── BeannamesApplication.java │ │ └── f_lazylookup │ │ │ ├── ImmediatlyLookupApplication.java │ │ │ ├── LazyLookupApplication.java │ │ │ └── bean │ │ │ ├── Cat.java │ │ │ └── Dog.java │ │ ├── bean │ │ ├── a_type │ │ │ ├── BeanTypeAnnoApplication.java │ │ │ ├── BeanTypeXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Ball.java │ │ │ │ ├── Car.java │ │ │ │ ├── Child.java │ │ │ │ ├── Toy.java │ │ │ │ └── ToyFactoryBean.java │ │ │ └── config │ │ │ │ └── BeanTypeConfiguration.java │ │ ├── b_scope │ │ │ ├── BeanScopeAnnoApplication.java │ │ │ ├── BeanScopeXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Child.java │ │ │ │ └── Toy.java │ │ │ ├── code │ │ │ │ └── ScopeReviewDemo.java │ │ │ └── config │ │ │ │ └── BeanScopeConfiguration.java │ │ └── c_instantiate │ │ │ ├── BeanInstantiateAnnoApplication.java │ │ │ ├── BeanInstantiateXmlApplication.java │ │ │ ├── bean │ │ │ ├── Ball.java │ │ │ ├── BallFactoryBean.java │ │ │ ├── Car.java │ │ │ ├── CarInstanceFactory.java │ │ │ └── CarStaticFactory.java │ │ │ └── config │ │ │ └── BeanInstantiateConfiguration.java │ │ ├── configuration │ │ ├── a_module │ │ │ ├── TavernApplication.java │ │ │ ├── anno │ │ │ │ └── EnableTavern.java │ │ │ ├── component │ │ │ │ ├── Bar.java │ │ │ │ ├── Bartender.java │ │ │ │ ├── Boss.java │ │ │ │ └── Waiter.java │ │ │ ├── config │ │ │ │ ├── BarConfiguration.java │ │ │ │ ├── BartenderConfiguration.java │ │ │ │ └── TavernConfiguration.java │ │ │ ├── registrar │ │ │ │ └── WaiterRegistrar.java │ │ │ └── selector │ │ │ │ └── BarImportSelector.java │ │ ├── b_profile │ │ │ ├── TavernProfileApplication.java │ │ │ ├── anno │ │ │ │ └── EnableTavern.java │ │ │ ├── component │ │ │ │ ├── Bar.java │ │ │ │ ├── Bartender.java │ │ │ │ ├── Boss.java │ │ │ │ └── Waiter.java │ │ │ ├── config │ │ │ │ ├── BarConfiguration.java │ │ │ │ ├── BartenderConfiguration.java │ │ │ │ ├── DataSourceConfiguration.java │ │ │ │ └── TavernConfiguration.java │ │ │ ├── registrar │ │ │ │ └── WaiterRegistrar.java │ │ │ └── selector │ │ │ │ └── BarImportSelector.java │ │ ├── c_conditional │ │ │ ├── TavernConditionalApplication.java │ │ │ ├── anno │ │ │ │ ├── ConditionalOnBean.java │ │ │ │ └── EnableTavern.java │ │ │ ├── component │ │ │ │ ├── Bar.java │ │ │ │ ├── Bartender.java │ │ │ │ ├── Boss.java │ │ │ │ └── Waiter.java │ │ │ ├── condition │ │ │ │ ├── ExistBossCondition.java │ │ │ │ └── OnBeanCondition.java │ │ │ ├── config │ │ │ │ ├── BarConfiguration.java │ │ │ │ ├── BartenderConfiguration.java │ │ │ │ └── TavernConfiguration.java │ │ │ ├── registrar │ │ │ │ └── WaiterRegistrar.java │ │ │ └── selector │ │ │ │ └── BarImportSelector.java │ │ ├── d_enablejdbc │ │ │ ├── EnableJdbcApplication.java │ │ │ ├── annotation │ │ │ │ └── ConditionalOnClassName.java │ │ │ ├── components │ │ │ │ └── OnClassNameConditional.java │ │ │ └── config │ │ │ │ ├── EnableJdbc.java │ │ │ │ └── JdbcConfiguration.java │ │ ├── e_enablejdbc │ │ │ ├── EnableJdbcApplication.java │ │ │ ├── annotation │ │ │ │ └── ConditionalOnClassName.java │ │ │ ├── components │ │ │ │ ├── JdbcConfigSelector.java │ │ │ │ └── OnClassNameConditional.java │ │ │ └── config │ │ │ │ ├── AbstractJdbcConfiguration.java │ │ │ │ ├── EnableJdbc.java │ │ │ │ ├── H2JdbcConfiguration.java │ │ │ │ ├── MySQLJdbcConfiguration.java │ │ │ │ └── OracleJdbcConfiguration.java │ │ ├── f_enablejdbc │ │ │ ├── EnableJdbcApplication.java │ │ │ └── config │ │ │ │ ├── DataSourceRegisterPostProcessor.java │ │ │ │ ├── EnableJdbc.java │ │ │ │ └── JdbcConfiguration.java │ │ └── z_spi │ │ │ ├── JdkSpiApplication.java │ │ │ ├── SpringSpiApplication.java │ │ │ └── bean │ │ │ ├── DemoDao.java │ │ │ ├── DemoMySQLDaoImpl.java │ │ │ └── DemoOracleDaoImpl.java │ │ ├── container │ │ ├── a_beanfactory │ │ │ ├── ListableBeanFactoryApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Dog.java │ │ │ └── servlet │ │ │ │ └── DemoServlet.java │ │ ├── b_applicationcontext │ │ │ ├── RefreshTestApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Dog.java │ │ │ └── config │ │ │ │ ├── CatConfiguration.java │ │ │ │ └── DogConfiguration.java │ │ └── c_singletonbeanregistry │ │ │ └── SingletonBeanRegistryApplication.java │ │ ├── definition │ │ ├── a_quickstart │ │ │ ├── BeanDefinitionQuickstartBeanApplication.java │ │ │ ├── BeanDefinitionQuickstartComponentApplication.java │ │ │ ├── BeanDefinitionQuickstartXmlApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── BeanDefinitionQuickstartConfiguration.java │ │ ├── b_registry │ │ │ ├── BeanDefinitionRegistryApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ ├── config │ │ │ │ └── BeanDefinitionRegistryConfiguration.java │ │ │ └── register │ │ │ │ └── PersonRegister.java │ │ ├── c_removedefinition │ │ │ ├── RemoveBeanDefinitionApplication.java │ │ │ ├── bean │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── RemoveBeanDefinitionPostProcessor.java │ │ └── d_merge │ │ │ ├── MergeBeanDefinitionApplication.java │ │ │ └── bean │ │ │ ├── Animal.java │ │ │ ├── Cat.java │ │ │ └── Person.java │ │ ├── environment │ │ ├── a_quickstart │ │ │ ├── EnvironmentQuickstartApplication.java │ │ │ └── bean │ │ │ │ └── EnvironmentHolder.java │ │ └── b_api │ │ │ ├── EnvironmentApiApplication.java │ │ │ ├── bean │ │ │ └── EnvironmentHolder.java │ │ │ └── config │ │ │ └── EnvironmentPropertyConfiguration.java │ │ ├── event │ │ ├── a_quickstart │ │ │ ├── QuickstartListenerApplication.java │ │ │ └── listener │ │ │ │ ├── ContextClosedApplicationListener.java │ │ │ │ └── ContextRefreshedApplicationListener.java │ │ ├── b_registerevent │ │ │ ├── RegisterEventApplication.java │ │ │ ├── event │ │ │ │ └── RegisterSuccessEvent.java │ │ │ ├── listener │ │ │ │ ├── EmailSenderListener.java │ │ │ │ ├── MessageSenderListener.java │ │ │ │ └── SmsSenderListener.java │ │ │ └── service │ │ │ │ └── RegisterService.java │ │ ├── c_hierarchical │ │ │ ├── HierarchicalEventApplication.java │ │ │ └── component │ │ │ │ ├── HierarchicalEvent.java │ │ │ │ └── HierarchicalEventListener.java │ │ └── d_payload │ │ │ ├── PayloadEventApplication.java │ │ │ └── component │ │ │ ├── PayloadIntegerApplicationListener.java │ │ │ └── PayloadObjectApplicationListener.java │ │ ├── lifecycle │ │ ├── a_initmethod │ │ │ ├── InitMethodAnnoApplication.java │ │ │ ├── InitMethodXmlApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Dog.java │ │ │ └── config │ │ │ │ └── InitMethodConfiguration.java │ │ ├── b_jsr250 │ │ │ ├── JSR250AnnoApplication.java │ │ │ ├── bean │ │ │ │ ├── Pen.java │ │ │ │ └── Pen2.java │ │ │ └── config │ │ │ │ └── JSR250Configuration.java │ │ ├── c_initializingbean │ │ │ ├── InitializingDisposableAnnoApplication.java │ │ │ ├── bean │ │ │ │ ├── Pen.java │ │ │ │ └── Pen3.java │ │ │ └── config │ │ │ │ └── InitializingDisposableConfiguration.java │ │ ├── d_prototype │ │ │ ├── PrototypeLifecycleAnnoApplication.java │ │ │ ├── PrototypeLifecycleXmlApplication.java │ │ │ ├── bean │ │ │ │ └── Pen.java │ │ │ └── config │ │ │ │ └── PrototypeLifecycleConfiguration.java │ │ └── e_source │ │ │ ├── LifecycleSourceAnnotationApplication.java │ │ │ ├── LifecycleSourceXmlApplication.java │ │ │ ├── bean │ │ │ ├── Cat.java │ │ │ └── Person.java │ │ │ └── config │ │ │ ├── LifecycleDestructionPostProcessor.java │ │ │ ├── LifecycleNameReadPostProcessor.java │ │ │ └── LifecycleSourceConfiguration.java │ │ ├── postprocessor │ │ ├── a_quickstart │ │ │ ├── BeanPostProcessorQuickstartApplication.java │ │ │ ├── bean │ │ │ │ ├── Cat.java │ │ │ │ └── Dog.java │ │ │ └── config │ │ │ │ └── AnimalBeanPostProcessor.java │ │ ├── b_getproperty │ │ │ ├── PostProcessorGetPropertyApplication.java │ │ │ ├── bean │ │ │ │ └── Cat.java │ │ │ └── config │ │ │ │ └── CatBeanPostProcessor.java │ │ ├── c_executetime │ │ │ ├── BeanPostProcessorExecuteTimeApplication.java │ │ │ ├── bean │ │ │ │ └── Dog.java │ │ │ └── config │ │ │ │ └── ExecuteTimeBeanPostProcessor.java │ │ ├── d_factorybean │ │ │ ├── FactoryBeanPostProcessorApplication.java │ │ │ ├── bean │ │ │ │ ├── Egg.java │ │ │ │ └── Hen.java │ │ │ └── config │ │ │ │ └── FactoryBeanPostProcessor.java │ │ ├── e_instantiation │ │ │ ├── InstantiationAwareApplication.java │ │ │ ├── bean │ │ │ │ └── Ball.java │ │ │ └── config │ │ │ │ └── BallFactoryInstantiationProcessor.java │ │ ├── f_destruction │ │ │ ├── DestructionPostProcessorApplication.java │ │ │ ├── bean │ │ │ │ └── Pen.java │ │ │ └── config │ │ │ │ └── DestructionPenPostProcessor.java │ │ ├── g_mergedefinition │ │ │ ├── MergeDefinitionPostProcessorApplication.java │ │ │ ├── bean │ │ │ │ ├── Animal.java │ │ │ │ ├── Cat.java │ │ │ │ └── Person.java │ │ │ └── config │ │ │ │ └── MergeDefinitionPostProcessor.java │ │ ├── h_factory │ │ │ └── FactoryPostProcessorApplication.java │ │ ├── h_factoryprocessor │ │ │ ├── FactoryProcessorApplication.java │ │ │ ├── bean │ │ │ │ ├── Color.java │ │ │ │ ├── Green.java │ │ │ │ └── Red.java │ │ │ └── config │ │ │ │ ├── ColorNameSetterFactoryPostProcessor.java │ │ │ │ └── ColorNameSetterPostProcessor.java │ │ └── i_registryprocessor │ │ │ ├── RegistryPostProcessorApplication.java │ │ │ ├── bean │ │ │ ├── Animal.java │ │ │ ├── Cat.java │ │ │ └── Dog.java │ │ │ └── config │ │ │ ├── AnimalNameSetterPostProcessor.java │ │ │ ├── AnimalProcessorRegisterPostProcessor.java │ │ │ └── DogRegisterPostProcessor.java │ │ ├── programmatic │ │ ├── a_quickstart │ │ │ ├── ProgrammaticQuickstartApplication.java │ │ │ └── bean │ │ │ │ └── Person.java │ │ ├── b_di │ │ │ ├── ProgrammaticInjectApplication.java │ │ │ └── bean │ │ │ │ ├── Animal.java │ │ │ │ ├── Cat.java │ │ │ │ └── Dog.java │ │ └── c_components │ │ │ └── ProgrammaticComponentsApplication.java │ │ └── resource │ │ ├── DogProtocolResolver.java │ │ └── ProtocolResolverApplication.java │ └── resources │ ├── META-INF │ ├── services │ │ ├── com.linkedbear.spring.configuration.e_enablejdbc.config.AbstractJdbcConfiguration │ │ └── com.linkedbear.spring.configuration.z_spi.bean.DemoDao │ └── spring.factories │ ├── annotation │ ├── import-anno.xml │ └── xml-config.xml │ ├── basic_di │ ├── complexfield │ │ └── inject-complexfield.xml │ ├── inject-constructor.xml │ ├── inject-set.xml │ └── value │ │ ├── inject-value.xml │ │ └── red.properties │ ├── basic_dl │ ├── quickstart-byname.xml │ ├── quickstart-bytype.xml │ ├── quickstart-lazylookup.xml │ ├── quickstart-oftype.xml │ └── quickstart-withanno.xml │ ├── bean │ ├── bean-instantiate.xml │ ├── bean-scope.xml │ └── bean-type.xml │ ├── container │ └── listable-container.xml │ ├── definition │ ├── definition-beans.xml │ ├── definition-merge.xml │ └── remove-definitions.xml │ ├── enablejdbc │ └── jdbc.properties │ ├── lifecycle │ ├── bean-initmethod.xml │ ├── bean-prototype.xml │ └── bean-source.xml │ ├── metadata │ └── metadata-info.xml │ ├── postprocessor │ ├── processor-executetime.xml │ └── processor-instantiation.xml │ ├── programmatic │ └── programmatic-components.xml │ ├── propertysource │ ├── jdbc.properties │ ├── jdbc.xml │ └── jdbc.yml │ └── resource │ └── Dog.txt ├── spring-02-aop ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ ├── aop │ │ ├── a_xmlaspect │ │ │ ├── XmlAspectApplication.java │ │ │ ├── component │ │ │ │ └── Logger.java │ │ │ └── service │ │ │ │ ├── FinanceService.java │ │ │ │ ├── OrderService.java │ │ │ │ └── impl │ │ │ │ └── OrderServiceImpl.java │ │ ├── b_aspectj │ │ │ ├── AnnotationAspectJApplication.java │ │ │ ├── component │ │ │ │ ├── Log.java │ │ │ │ └── Logger.java │ │ │ ├── config │ │ │ │ └── AspectJAOPConfiguration.java │ │ │ └── service │ │ │ │ ├── FinanceService.java │ │ │ │ ├── OrderService.java │ │ │ │ └── impl │ │ │ │ └── OrderServiceImpl.java │ │ ├── c_joinpoint │ │ │ ├── AnnotationAspectJJoinPointApplication.java │ │ │ ├── component │ │ │ │ ├── Log.java │ │ │ │ └── Logger.java │ │ │ ├── config │ │ │ │ └── AspectJJoinPointAOPConfiguration.java │ │ │ └── service │ │ │ │ ├── FinanceService.java │ │ │ │ ├── OrderService.java │ │ │ │ └── impl │ │ │ │ └── OrderServiceImpl.java │ │ ├── d_order │ │ │ ├── AspectOrderApplication.java │ │ │ ├── aspect │ │ │ │ ├── AbcAspect.java │ │ │ │ ├── LogAspect.java │ │ │ │ └── TransactionAspect.java │ │ │ ├── config │ │ │ │ └── AspectOrderConfiguration.java │ │ │ └── service │ │ │ │ └── UserService.java │ │ ├── e_aopcontext │ │ │ ├── AopContextApplication.java │ │ │ ├── aspect │ │ │ │ └── LogAspect.java │ │ │ ├── config │ │ │ │ └── AopContextConfiguration.java │ │ │ └── service │ │ │ │ └── UserService.java │ │ ├── f_introduction │ │ │ ├── IntroductionApplication.java │ │ │ ├── aspect │ │ │ │ └── IntroductionAspect.java │ │ │ ├── component │ │ │ │ ├── MoneyValidator.java │ │ │ │ └── impl │ │ │ │ │ └── MoneyValidatorImpl.java │ │ │ ├── config │ │ │ │ └── IntroductionConfiguration.java │ │ │ └── service │ │ │ │ └── FinanceService.java │ │ ├── g_weaving │ │ │ ├── LoadTimeWeavingApplication.java │ │ │ ├── aspect │ │ │ │ └── LogAspect.java │ │ │ ├── config │ │ │ │ └── LoadTimeWeavingConfiguration.java │ │ │ └── service │ │ │ │ └── UserService.java │ │ └── h_imitate │ │ │ ├── ImitateAopApplication.java │ │ │ ├── aspect │ │ │ └── LogAspect.java │ │ │ ├── processor │ │ │ └── AopProxyPostProcessor.java │ │ │ └── service │ │ │ └── UserService.java │ │ ├── proxy │ │ ├── a_basic │ │ │ ├── Client.java │ │ │ ├── Partner.java │ │ │ └── Player.java │ │ ├── b_jdk │ │ │ ├── Client.java │ │ │ ├── IndividualPartner.java │ │ │ ├── Partner.java │ │ │ └── PartnerPlatform.java │ │ └── c_cglib │ │ │ ├── Client.java │ │ │ └── PartnerPlatform.java │ │ └── transaction │ │ ├── TransactionApplication.java │ │ ├── aspect │ │ ├── TransactionAspect.java │ │ └── Transactional.java │ │ ├── config │ │ └── TransactionAspectConfiguration.java │ │ ├── dao │ │ └── FinanceDao.java │ │ ├── service │ │ └── FinanceService.java │ │ └── util │ │ └── JdbcUtils.java │ └── resources │ ├── META-INF │ └── aop.xml │ └── aop │ └── xmlaspect.xml ├── spring-03-dao ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ ├── jdbc │ │ ├── a_quickstart │ │ │ ├── JdbcTemplateQuickstartApplication.java │ │ │ └── JdbcTemplateXmlApplication.java │ │ ├── b_crud │ │ │ ├── JdbcTemplateCRUDApplication.java │ │ │ └── bean │ │ │ │ └── User.java │ │ ├── c_dao │ │ │ ├── JdbcTemplateDaoApplication.java │ │ │ ├── config │ │ │ │ ├── JdbcConfiguration.java │ │ │ │ └── JdbcDaoSupportPostProcessor.java │ │ │ └── dao │ │ │ │ ├── BaseDao.java │ │ │ │ ├── UserDao.java │ │ │ │ └── impl │ │ │ │ ├── UserDaoImpl.java │ │ │ │ ├── UserDaoImpl2.java │ │ │ │ └── UserDaoImpl3.java │ │ └── d_queryfor │ │ │ └── JdbcTemplateQueryApplication.java │ │ └── transaction │ │ ├── a_review │ │ ├── JdbcTransactionApplication.java │ │ └── TransactionSavepointApplication.java │ │ ├── b_programmatic │ │ ├── ProgrammaticTransactionApplication.java │ │ ├── dao │ │ │ └── UserDao.java │ │ └── service │ │ │ └── UserService.java │ │ ├── c_declarativexml │ │ ├── DeclarativeTransactionXmlApplication.java │ │ ├── dao │ │ │ ├── AccountDao.java │ │ │ └── UserDao.java │ │ └── service │ │ │ ├── AccountService.java │ │ │ └── UserService.java │ │ ├── d_declarativeanno │ │ ├── DeclarativeTransactionAnnoApplication.java │ │ ├── config │ │ │ └── DeclarativeTransactionConfiguration.java │ │ ├── dao │ │ │ ├── AccountDao.java │ │ │ └── UserDao.java │ │ └── service │ │ │ ├── AccountService.java │ │ │ └── UserService.java │ │ ├── e_spread │ │ ├── TransactionSpreadApplication.java │ │ ├── TransactionSpreadSourceApplication.java │ │ ├── config │ │ │ └── TransactionSpreadConfiguration.java │ │ └── service │ │ │ ├── PointService.java │ │ │ └── UserService.java │ │ └── f_listener │ │ ├── TransactionListenerApplication.java │ │ ├── config │ │ └── TransactionListenerConfiguration.java │ │ ├── dao │ │ └── UserDao.java │ │ ├── event │ │ └── UserSaveEvent.java │ │ ├── listener │ │ └── UserTransactionListener.java │ │ └── service │ │ └── UserService.java │ └── resources │ ├── jdbc │ └── spring-jdbc.xml │ └── tx │ ├── declarative-transaction.xml │ ├── programmatic-transaction.xml │ └── transaction-spread.xml ├── spring-04-web ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ ├── a_xml │ │ ├── UserService.java │ │ ├── UserServlet.java │ │ └── UserServlet2.java │ │ ├── b_anno │ │ ├── DemoWebApplicationInitializer.java │ │ ├── config │ │ │ └── UserConfiguration.java │ │ └── servlet │ │ │ └── UserServlet3.java │ │ └── c_async │ │ └── AsyncServlet.java │ ├── resources │ └── spring-web.xml │ └── webapp │ └── WEB-INF │ └── web.xml ├── spring-04-webmvc-anno-withdao ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ └── withdao │ │ ├── FilterWebApplicationInitializer.java │ │ ├── WebMvcApplicationInitializer.java │ │ ├── config │ │ ├── EnableWebMvcConfiguration.java │ │ ├── JdbcDaoConfiguration.java │ │ ├── RootConfiguration.java │ │ └── WebMvcConfiguration.java │ │ ├── controller │ │ ├── DepartmentController70.java │ │ ├── DepartmentController71.java │ │ ├── DepartmentController74.java │ │ ├── JsonDepartmentController72.java │ │ ├── RestfulDepartmentController71.java │ │ ├── SessionAttributeController.java │ │ ├── UserController73.java │ │ ├── UserController74.java │ │ ├── UserController75.java │ │ └── UserController76.java │ │ ├── converter │ │ └── String2DateConverter.java │ │ ├── dao │ │ ├── DepartmentDao.java │ │ └── UserDao.java │ │ ├── entity │ │ ├── Department.java │ │ └── User.java │ │ ├── service │ │ ├── DepartmentService.java │ │ └── UserService.java │ │ └── validation │ │ ├── UserInfoGroup.java │ │ └── UserPasswordGroup.java │ └── webapp │ └── WEB-INF │ └── pages │ └── demo.jsp ├── spring-04-webmvc-xml-withdao ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── linkedbear │ │ └── spring │ │ └── withdao │ │ ├── advice │ │ ├── ConversionBinderAdvice.java │ │ └── DataModelAttributeAdvice.java │ │ ├── controller │ │ ├── DepartmentController70.java │ │ ├── DepartmentController71.java │ │ ├── DepartmentController74.java │ │ ├── JsonDepartmentController72.java │ │ ├── RestfulDepartmentController71.java │ │ ├── SessionAttributeController.java │ │ ├── UserController73.java │ │ ├── UserController74.java │ │ ├── UserController75.java │ │ └── UserController76.java │ │ ├── converter │ │ └── String2DateConverter.java │ │ ├── dao │ │ ├── DepartmentDao.java │ │ └── UserDao.java │ │ ├── entity │ │ ├── Department.java │ │ └── User.java │ │ ├── exception │ │ └── RuntimeExceptionHandler.java │ │ ├── interceptor │ │ ├── DemoInterceptor.java │ │ ├── DemoInterceptor1.java │ │ └── DemoInterceptor2.java │ │ ├── service │ │ ├── DepartmentService.java │ │ └── UserService.java │ │ └── validation │ │ ├── UserInfoGroup.java │ │ └── UserPasswordGroup.java │ ├── resources │ ├── spring-ioc-withdao.xml │ ├── spring-mvc-withdao.xml │ └── validation-message.properties │ └── webapp │ ├── WEB-INF │ ├── pages │ │ ├── demo.jsp │ │ ├── dept │ │ │ ├── deptInfo.jsp │ │ │ └── deptList.jsp │ │ ├── error.jsp │ │ ├── session.jsp │ │ └── user │ │ │ ├── userInfo.jsp │ │ │ └── userList.jsp │ └── web.xml │ ├── js │ └── jquery.min.js │ └── pages │ ├── dept │ ├── deptInfo.jsp │ └── deptList.jsp │ ├── error.jsp │ ├── session.jsp │ └── user │ ├── userInfo.jsp │ └── userList.jsp ├── spring-04-webmvc ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── linkedbear │ │ │ └── spring │ │ │ ├── a_quickstart │ │ │ └── DemoController.java │ │ │ ├── b_anno │ │ │ ├── SpringWebMvcInitializer.java │ │ │ ├── config │ │ │ │ ├── RootConfiguration.java │ │ │ │ └── WebMvcConfiguration.java │ │ │ └── controller │ │ │ │ └── DemoController.java │ │ │ └── c_async │ │ │ └── AsyncController.java │ ├── resources │ │ ├── spring-ioc.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── pages │ │ └── demo.jsp │ │ └── web.xml │ └── test │ └── java │ └── com │ └── linkedbear │ └── spring │ ├── SpringWebMvcApplication.java │ ├── config │ ├── DispatcherServletConfiguration.java │ └── WebMvcConfiguration.java │ ├── controller │ └── DemoController.java │ ├── service │ └── DemoService.java │ └── servlet │ ├── AbstractServlet.java │ └── DemoServlet.java ├── spring-05-integration ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── linkedbear │ │ │ └── spring │ │ │ ├── data │ │ │ └── jpa │ │ │ │ ├── dao │ │ │ │ └── DepartmentDao.java │ │ │ │ └── entity │ │ │ │ └── Department.java │ │ │ ├── mybatis │ │ │ ├── MyBatisConfiguration.java │ │ │ ├── dao │ │ │ │ └── DepartmentDao.java │ │ │ ├── entity │ │ │ │ └── Department.java │ │ │ └── mapper │ │ │ │ ├── DepartmentMapper.java │ │ │ │ └── department.xml │ │ │ └── test │ │ │ ├── SpringTestApplication.java │ │ │ ├── bean │ │ │ └── Cat.java │ │ │ └── config │ │ │ └── SpringTestConfiguration.java │ └── resources │ │ ├── data │ │ ├── spring-data-jpa.xml │ │ └── spring-data-redis.xml │ │ ├── mybatis │ │ ├── SqlMapConfig.xml │ │ ├── dept.xml │ │ └── spring-mybatis.xml │ │ └── test │ │ └── spring-test.xml │ └── test │ └── java │ └── com │ └── linkedbear │ └── spring │ ├── data │ ├── jpa │ │ └── JpaTests.java │ └── redis │ │ └── RedisTests.java │ ├── mybatis │ └── MyBatisTests.java │ └── test │ └── SpringTests.java └── spring-06-boot ├── pom.xml └── src └── main ├── java └── com │ └── linkedbear │ └── spring │ └── boot │ ├── BootQuickstartApplication.java │ └── controller │ └── DemoController.java └── resources └── application.properties /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | pom.xml.tag 3 | pom.xml.releaseBackup 4 | pom.xml.versionsBackup 5 | pom.xml.next 6 | release.properties 7 | dependency-reduced-pom.xml 8 | buildNumber.properties 9 | .mvn/timing.properties 10 | # https://github.com/takari/maven-wrapper#usage-without-binary-jar 11 | .mvn/wrapper/maven-wrapper.jar 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/a_original/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.a_original.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/a_original/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.a_original.dao.impl; 2 | 3 | import com.linkedbear.architecture.a_original.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/a_original/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.a_original.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/a_original/service/impl/DemoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.a_original.service.impl; 2 | 3 | import com.linkedbear.architecture.a_original.dao.DemoDao; 4 | import com.linkedbear.architecture.a_original.dao.impl.DemoDaoImpl; 5 | import com.linkedbear.architecture.a_original.service.DemoService; 6 | 7 | import java.util.List; 8 | 9 | public class DemoServiceImpl implements DemoService { 10 | 11 | DemoDao demoDao = new DemoDaoImpl(); 12 | 13 | @Override 14 | public List findAll() { 15 | return demoDao.findAll(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.dao.impl; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/dao/impl/DemoMySQLDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.dao.impl; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoMySQLDao implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | // jdbc operations ...... 13 | System.out.println("DemoMySQLDao findAll run ......"); 14 | return Arrays.asList("aaa", "bbb", "ccc"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/dao/impl/DemoOracleDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.dao.impl; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoOracleDao implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | // jdbc operations ...... 13 | System.out.println("DemoOracleDao findAll run ......"); 14 | return Arrays.asList("aaa", "bbb", "ccc"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/factory/BeanFactory.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.factory; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | import com.linkedbear.architecture.b_factory.dao.impl.DemoDaoImpl; 5 | import com.linkedbear.architecture.b_factory.dao.impl.DemoMySQLDao; 6 | import com.linkedbear.architecture.b_factory.service.DemoService; 7 | import com.linkedbear.architecture.b_factory.service.impl.DemoServiceImpl; 8 | 9 | public class BeanFactory { 10 | 11 | public static DemoService getDemoService() { 12 | return new DemoServiceImpl(); 13 | } 14 | 15 | public static DemoDao getDemoDao() { 16 | // return new DemoDaoImpl(); 17 | return new DemoMySQLDao(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/service/impl/DemoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.service.impl; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | import com.linkedbear.architecture.b_factory.factory.BeanFactory; 5 | import com.linkedbear.architecture.b_factory.service.DemoService; 6 | 7 | import java.util.List; 8 | 9 | public class DemoServiceImpl implements DemoService { 10 | 11 | DemoDao demoDao = BeanFactory.getDemoDao(); 12 | 13 | @Override 14 | public List findAll() { 15 | return demoDao.findAll(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/b_factory/service/impl/DemoServiceImpl2.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.b_factory.service.impl; 2 | 3 | import com.linkedbear.architecture.b_factory.dao.DemoDao; 4 | import com.linkedbear.architecture.b_factory.factory.BeanFactory; 5 | import com.linkedbear.architecture.b_factory.service.DemoService; 6 | 7 | import java.util.List; 8 | 9 | public class DemoServiceImpl2 implements DemoService { 10 | 11 | DemoDao demoDao = BeanFactory.getDemoDao(); 12 | 13 | @Override 14 | public List findAll() { 15 | return demoDao.findAll(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/c_reflect/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.c_reflect.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/c_reflect/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.c_reflect.dao.impl; 2 | 3 | import com.linkedbear.architecture.c_reflect.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/c_reflect/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.c_reflect.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/c_reflect/service/impl/DemoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.c_reflect.service.impl; 2 | 3 | import com.linkedbear.architecture.c_reflect.dao.DemoDao; 4 | import com.linkedbear.architecture.c_reflect.factory.BeanFactory; 5 | import com.linkedbear.architecture.c_reflect.service.DemoService; 6 | 7 | import java.util.List; 8 | 9 | public class DemoServiceImpl implements DemoService { 10 | 11 | DemoDao demoDao = BeanFactory.getDemoDao(); 12 | 13 | @Override 14 | public List findAll() { 15 | return demoDao.findAll(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/d_properties/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.d_properties.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/d_properties/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.d_properties.dao.impl; 2 | 3 | import com.linkedbear.architecture.d_properties.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/d_properties/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.d_properties.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/e_cachedfactory/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.e_cachedfactory.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/e_cachedfactory/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.e_cachedfactory.dao.impl; 2 | 3 | import com.linkedbear.architecture.e_cachedfactory.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/e_cachedfactory/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.e_cachedfactory.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/f_pointslog/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.f_pointslog.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/f_pointslog/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.f_pointslog.dao.impl; 2 | 3 | import com.linkedbear.architecture.f_pointslog.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/f_pointslog/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.f_pointslog.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/g_logutils/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.g_logutils.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/g_logutils/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.g_logutils.dao.impl; 2 | 3 | import com.linkedbear.architecture.g_logutils.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/g_logutils/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.g_logutils.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/g_logutils/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.g_logutils.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/h_decorator/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.h_decorator.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/h_decorator/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.h_decorator.dao.impl; 2 | 3 | import com.linkedbear.architecture.h_decorator.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/h_decorator/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.h_decorator.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/h_decorator/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.h_decorator.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/i_template/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.i_template.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/i_template/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.i_template.dao.impl; 2 | 3 | import com.linkedbear.architecture.i_template.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/i_template/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.i_template.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/i_template/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.i_template.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/j_proxy/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.j_proxy.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/j_proxy/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.j_proxy.dao.impl; 2 | 3 | import com.linkedbear.architecture.j_proxy.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/j_proxy/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.j_proxy.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/j_proxy/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.j_proxy.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/k_filtermethod/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.k_filtermethod.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/k_filtermethod/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.k_filtermethod.dao.impl; 2 | 3 | import com.linkedbear.architecture.k_filtermethod.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/k_filtermethod/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.k_filtermethod.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/k_filtermethod/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.k_filtermethod.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/l_proxyfactory/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.l_proxyfactory.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/l_proxyfactory/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.l_proxyfactory.dao.impl; 2 | 3 | import com.linkedbear.architecture.l_proxyfactory.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/l_proxyfactory/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.l_proxyfactory.service; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoService { 6 | List findAll(); 7 | 8 | int add(String userId, int points); 9 | int subtract(String userId, int points); 10 | int multiply(String userId, int points); 11 | int divide(String userId, int points); 12 | } 13 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/java/com/linkedbear/architecture/l_proxyfactory/utils/LogUtils.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.architecture.l_proxyfactory.utils; 2 | 3 | import java.util.Arrays; 4 | 5 | public class LogUtils { 6 | 7 | public static void printLog(String className, String methodName, Object... args) { 8 | System.out.println(className + " " + methodName + " ..."); 9 | System.out.println("参数列表: " + Arrays.toString(args)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_d.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.d_properties.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.d_properties.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_e.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.e_cachedfactory.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.e_cachedfactory.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_f.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.f_pointslog.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.f_pointslog.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_g.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.g_logutils.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.g_logutils.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_h.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.h_decorator.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.h_decorator.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_i.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.i_template.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.i_template.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_j.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.j_proxy.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.j_proxy.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_k.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.k_filtermethod.service.impl.DemoServiceImpl 2 | demoDao=com.linkedbear.architecture.k_filtermethod.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/factory_l.properties: -------------------------------------------------------------------------------- 1 | demoService=com.linkedbear.architecture.l_proxyfactory.service.impl.DemoServiceImpl 2 | demoService.proxy.class=com.linkedbear.architecture.l_proxyfactory.proxy.LogAdvisor 3 | demoService.proxy.methods=add,subtract,multiply,divide 4 | 5 | demoDao=com.linkedbear.architecture.l_proxyfactory.dao.impl.DemoDaoImpl -------------------------------------------------------------------------------- /spring-00-introduction/src/main/resources/proxy.properties: -------------------------------------------------------------------------------- 1 | log.methods=add,subtract,multiply,divide -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/a_quickstart/AnnotationConfigApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.a_quickstart; 2 | 3 | import com.linkedbear.spring.annotation.a_quickstart.bean.Person; 4 | import com.linkedbear.spring.annotation.a_quickstart.config.QuickstartConfiguration; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 7 | 8 | public class AnnotationConfigApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new AnnotationConfigApplicationContext(QuickstartConfiguration.class); 12 | Person person = ctx.getBean(Person.class); 13 | System.out.println(person); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/a_quickstart/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.a_quickstart.bean; 2 | 3 | public class Person { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/a_quickstart/config/QuickstartConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.a_quickstart.config; 2 | 3 | import com.linkedbear.spring.annotation.a_quickstart.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class QuickstartConfiguration { 9 | 10 | @Bean 11 | public Person person() { 12 | return new Person(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/b_di/AnnotationDIApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.b_di; 2 | 3 | import com.linkedbear.spring.annotation.b_di.bean.Person; 4 | import com.linkedbear.spring.annotation.b_di.config.AnnotationDIConfiguration; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 7 | 8 | public class AnnotationDIApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new AnnotationConfigApplicationContext(AnnotationDIConfiguration.class); 12 | Person person = ctx.getBean(Person.class); 13 | System.out.println(person); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/b_di/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.b_di.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | private Integer age; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public Integer getAge() { 17 | return age; 18 | } 19 | 20 | public void setAge(Integer age) { 21 | this.age = age; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/b_di/config/AnnotationDIConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.b_di.config; 2 | 3 | import com.linkedbear.spring.annotation.b_di.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class AnnotationDIConfiguration { 9 | 10 | @Bean 11 | public Person person() { 12 | Person person = new Person(); 13 | person.setName("person"); 14 | person.setAge(123); 15 | return person; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/c_scan/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.c_scan.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Cat { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/c_scan/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.c_scan.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Person { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/c_scan/config/ComponentScanConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.c_scan.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("com.linkedbear.spring.annotation.c_scan") 8 | public class ComponentScanConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/d_importxml/config/AnnotationConfigConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.d_importxml.config; 2 | 3 | import com.linkedbear.spring.basic_dl.a_quickstart_byname.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class AnnotationConfigConfiguration { 9 | 10 | @Bean 11 | public Person person() { 12 | return new Person(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/d_importxml/config/ImportXmlAnnotationConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.d_importxml.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.context.annotation.ImportResource; 5 | 6 | @Configuration 7 | @ImportResource("classpath:annotation/beans.xml") 8 | public class ImportXmlAnnotationConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/BasePackageClassApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass; 2 | 3 | import com.linkedbear.spring.annotation.e_basepackageclass.config.BasePackageClassConfiguration; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | import java.util.stream.Stream; 7 | 8 | public class BasePackageClassApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(BasePackageClassConfiguration.class); 12 | String[] beanDefinitionNames = ctx.getBeanDefinitionNames(); 13 | Stream.of(beanDefinitionNames).forEach(System.out::println); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/bean/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass.bean; 2 | 3 | import org.springframework.stereotype.Repository; 4 | 5 | @Repository 6 | public class DemoDao { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/bean/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass.bean; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class DemoService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/component/DemoComponent.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass.component; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class DemoComponent { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/component/inner/InnerComponent.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass.component.inner; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class InnerComponent { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/e_basepackageclass/config/BasePackageClassConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.e_basepackageclass.config; 2 | 3 | import com.linkedbear.spring.annotation.e_basepackageclass.bean.DemoService; 4 | import com.linkedbear.spring.annotation.e_basepackageclass.component.DemoComponent; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | @ComponentScan(basePackageClasses = {DemoService.class, DemoComponent.class}) 10 | public class BasePackageClassConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/TypeFilterApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter; 2 | 3 | import com.linkedbear.spring.annotation.f_typefilter.config.TypeFilterConfiguration; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | import java.util.stream.Stream; 7 | 8 | public class TypeFilterApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(TypeFilterConfiguration.class); 12 | String[] beanDefinitionNames = ctx.getBeanDefinitionNames(); 13 | Stream.of(beanDefinitionNames).forEach(System.out::println); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/animals/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.animals; 2 | 3 | import com.linkedbear.spring.annotation.f_typefilter.anno.Animal; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @Animal 8 | public class Cat { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/animals/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.animals; 2 | 3 | import com.linkedbear.spring.annotation.f_typefilter.anno.Animal; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @Animal 8 | public class Dog { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/animals/Pikachu.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.animals; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Pikachu { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/anno/Animal.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.anno; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.TYPE) 12 | public @interface Animal { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/bean/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.bean; 2 | 3 | public class DemoDao { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/bean/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.bean; 2 | 3 | public class DemoService { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/color/Color.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.color; 2 | 3 | public class Color { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/color/Green.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.color; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Green { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/color/Red.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.color; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Red extends Color { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/f_typefilter/color/Yellow.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.f_typefilter.color; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Yellow extends Color { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/g_propertysource/config/JdbcPropertiesConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.g_propertysource.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.PropertySource; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.annotation.g_propertysource.bean") 9 | @PropertySource("classpath:propertysource/jdbc.properties") 10 | public class JdbcPropertiesConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/h_propertyxml/PropertySourceXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.h_propertyxml; 2 | 3 | import com.linkedbear.spring.annotation.h_propertyxml.bean.JdbcXmlProperty; 4 | import com.linkedbear.spring.annotation.h_propertyxml.config.JdbcXmlConfiguration; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class PropertySourceXmlApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(JdbcXmlConfiguration.class); 11 | System.out.println(ctx.getBean(JdbcXmlProperty.class).toString()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/h_propertyxml/config/JdbcXmlConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.h_propertyxml.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.PropertySource; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.annotation.h_propertyxml.bean") 9 | @PropertySource("classpath:propertysource/jdbc.xml") 10 | public class JdbcXmlConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/i_propertyyml/PropertySourceYmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.i_propertyyml; 2 | 3 | import com.linkedbear.spring.annotation.i_propertyyml.bean.JdbcYmlProperty; 4 | import com.linkedbear.spring.annotation.i_propertyyml.config.JdbcYmlConfiguration; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class PropertySourceYmlApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(JdbcYmlConfiguration.class); 11 | System.out.println(ctx.getBean(JdbcYmlProperty.class).toString()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/annotation/i_propertyyml/config/JdbcYmlConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.annotation.i_propertyyml.config; 2 | 3 | import com.linkedbear.spring.annotation.i_propertyyml.factory.YmlPropertySourceFactory; 4 | import org.springframework.context.annotation.ComponentScan; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.PropertySource; 7 | 8 | @Configuration 9 | @ComponentScan("com.linkedbear.spring.annotation.i_propertyyml.bean") 10 | @PropertySource(value = "classpath:propertysource/jdbc.yml", factory = YmlPropertySourceFactory.class) 11 | public class JdbcYmlConfiguration { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/a_quickstart_set/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.a_quickstart_set.bean; 2 | 3 | public class Cat { 4 | 5 | private String name; 6 | private Person master; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public Person getMaster() { 17 | return master; 18 | } 19 | 20 | public void setMaster(Person master) { 21 | this.master = master; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "Cat{" + "name='" + name + '\'' + ", master=" + master + '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/a_quickstart_set/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.a_quickstart_set.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | private Integer age; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public Integer getAge() { 17 | return age; 18 | } 19 | 20 | public void setAge(Integer age) { 21 | this.age = age; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/b_constructor/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.b_constructor.bean; 2 | 3 | public class Cat { 4 | 5 | private String name; 6 | private Person father; 7 | 8 | public Cat(String name, Person father) { 9 | this.name = name; 10 | this.father = father; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public Person getFather() { 18 | return father; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "Cat{" + "name='" + name + '\'' + ", father=" + father + '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/b_constructor/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.b_constructor.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | private Integer age; 7 | 8 | public Person(String name, Integer age) { 9 | this.name = name; 10 | this.age = age; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public Integer getAge() { 18 | return age; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/b_constructor/config/InjectByConstructorConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.b_constructor.config; 2 | 3 | import com.linkedbear.spring.basic_di.b_constructor.bean.Person; 4 | import com.linkedbear.spring.basic_di.b_constructor.bean.Cat; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | public class InjectByConstructorConfiguration { 10 | 11 | @Bean 12 | public Person person() { 13 | return new Person("test-person-anno-byconstructor", 18); 14 | } 15 | 16 | @Bean 17 | public Cat cat() { 18 | return new Cat("test-son-anno", person()); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/c_value_spel/bean/Black.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.c_value_spel.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class Black { 8 | 9 | @Value("black-value-anno") 10 | private String name; 11 | 12 | @Value("0") 13 | private Integer order; 14 | 15 | @Override 16 | public String toString() { 17 | return "Black{" + "name='" + name + '\'' + ", order=" + order + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/c_value_spel/bean/Red.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.c_value_spel.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class Red { 8 | 9 | @Value("${red.name}") 10 | private String name; 11 | 12 | @Value("${red.order}") 13 | private Integer order; 14 | 15 | @Override 16 | public String toString() { 17 | return "Red{" + "name='" + name + '\'' + ", order=" + order + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/c_value_spel/bean/White.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.c_value_spel.bean; 2 | 3 | public class White { 4 | 5 | private String name; 6 | 7 | private Integer order; 8 | 9 | public String getName() { 10 | return name; 11 | } 12 | 13 | public void setName(String name) { 14 | this.name = name; 15 | } 16 | 17 | public Integer getOrder() { 18 | return order; 19 | } 20 | 21 | public void setOrder(Integer order) { 22 | this.order = order; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "White{" + "name='" + name + '\'' + ", order=" + order + '}'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/c_value_spel/bean/Yellow.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.c_value_spel.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class Yellow { 8 | 9 | private String name; 10 | 11 | @Value("#{new Integer[5]}") 12 | private Integer[] orders; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/c_value_spel/config/InjectValueConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.c_value_spel.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.PropertySource; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.basic_di.c_value_spel.bean") 9 | @PropertySource("classpath:basic_di/value/red.properties") 10 | public class InjectValueConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/d_autowired/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.d_autowired.bean; 2 | 3 | public class Cat { 4 | 5 | private String name; 6 | 7 | private Person person; 8 | 9 | public String getName() { 10 | return name; 11 | } 12 | 13 | public void setName(String name) { 14 | this.name = name; 15 | } 16 | 17 | public Person getPerson() { 18 | return person; 19 | } 20 | 21 | public void setPerson(Person person) { 22 | this.person = person; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "Cat{" + "name='" + name + '\'' + ", person=" + person.getName() + '}'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/d_autowired/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.d_autowired.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component("administrator") 6 | public class Person { 7 | 8 | private String name = "administrator"; 9 | 10 | public String getName() { 11 | return name; 12 | } 13 | 14 | public void setName(String name) { 15 | this.name = name; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "Person{" + "name='" + name + '\'' + '}'; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/e_jsr250/JSR250Application.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.e_jsr250; 2 | 3 | import com.linkedbear.spring.basic_di.e_jsr250.bean.Bird; 4 | import com.linkedbear.spring.basic_di.e_jsr250.config.JSR250Configuration; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 7 | 8 | public class JSR250Application { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new AnnotationConfigApplicationContext(JSR250Configuration.class); 12 | Bird bird = ctx.getBean(Bird.class); 13 | System.out.println(bird); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/e_jsr250/bean/Bird.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.e_jsr250.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import javax.annotation.Resource; 6 | 7 | @Component 8 | public class Bird { 9 | 10 | @Resource(name = "master") 11 | private Person person; 12 | 13 | @Override 14 | public String toString() { 15 | return "Bird{" + "person=" + person + '}'; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/e_jsr250/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.e_jsr250.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | 7 | public Person(String name) { 8 | this.name = name; 9 | } 10 | 11 | @Override 12 | public String toString() { 13 | return "Person{" + "name='" + name + '\'' + '}'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/e_jsr250/config/JSR250Configuration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.e_jsr250.config; 2 | 3 | import com.linkedbear.spring.basic_di.e_jsr250.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | @ComponentScan("com.linkedbear.spring.basic_di.e_jsr250.bean") 10 | public class JSR250Configuration { 11 | 12 | @Bean 13 | public Person master() { 14 | return new Person("master"); 15 | } 16 | 17 | @Bean 18 | public Person admin() { 19 | return new Person("admin"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/f_jsr330/JSR330Application.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.f_jsr330; 2 | 3 | import com.linkedbear.spring.basic_di.f_jsr330.bean.Cat; 4 | import com.linkedbear.spring.basic_di.f_jsr330.config.JSR330Configration; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 7 | 8 | public class JSR330Application { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new AnnotationConfigApplicationContext(JSR330Configration.class); 12 | Cat cat = ctx.getBean(Cat.class); 13 | System.out.println(cat); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/f_jsr330/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.f_jsr330.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import javax.inject.Inject; 6 | import javax.inject.Named; 7 | 8 | @Component 9 | public class Cat { 10 | 11 | private String name = "mimi"; 12 | 13 | @Inject 14 | @Named("admin") 15 | private Person master; 16 | 17 | @Override 18 | public String toString() { 19 | return "Cat{" + "name='" + name + '\'' + ", master=" + master + '}'; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/f_jsr330/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.f_jsr330.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | 7 | public Person(String name) { 8 | this.name = name; 9 | } 10 | 11 | @Override 12 | public String toString() { 13 | return "Person{" + "name='" + name + '\'' + '}'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/f_jsr330/config/JSR330Configration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.f_jsr330.config; 2 | 3 | import com.linkedbear.spring.basic_di.f_jsr330.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | @ComponentScan("com.linkedbear.spring.basic_di.f_jsr330.bean") 10 | public class JSR330Configration { 11 | 12 | @Bean 13 | public Person person() { 14 | return new Person("person"); 15 | } 16 | 17 | @Bean 18 | public Person admin() { 19 | return new Person("admin"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/g_complexfield/ComplexFieldXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.g_complexfield; 2 | 3 | import com.linkedbear.spring.basic_di.g_complexfield.bean.Person; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.support.ClassPathXmlApplicationContext; 6 | 7 | public class ComplexFieldXmlApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | ApplicationContext ctx = new ClassPathXmlApplicationContext("basic_di/complexfield/inject-complexfield.xml"); 11 | Person person = ctx.getBean(Person.class); 12 | System.out.println(person); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/g_complexfield/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.g_complexfield.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component("miaomiao") 7 | public class Cat { 8 | 9 | @Value("miaomiao") 10 | private String name = "cat"; 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | 16 | @Override 17 | public String toString() { 18 | return "Cat{" + "name='" + name + '\'' + '}'; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/g_complexfield/config/InjectComplexFieldConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.g_complexfield.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("com.linkedbear.spring.basic_di.g_complexfield.bean") 8 | public class InjectComplexFieldConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/h_aware/config/AwareConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.h_aware.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("com.linkedbear.spring.basic_di.h_aware.bean") 8 | public class AwareConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/i_lazyinject/LazyInjectAnnoApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.i_lazyinject; 2 | 3 | import com.linkedbear.spring.basic_di.i_lazyinject.bean.Dog; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class LazyInjectAnnoApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | ApplicationContext ctx = new AnnotationConfigApplicationContext( 11 | "com.linkedbear.spring.basic_di.i_lazyinject.bean"); 12 | Dog dog = ctx.getBean(Dog.class); 13 | System.out.println(dog); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/i_lazyinject/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.i_lazyinject.bean; 2 | 3 | import org.springframework.beans.factory.ObjectProvider; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class Dog { 9 | 10 | @Autowired 11 | private ObjectProvider person; 12 | 13 | @Override 14 | public String toString() { 15 | return "Dog{" + "person=" + person.getIfAvailable(Person::new) + '}'; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_di/i_lazyinject/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_di.i_lazyinject.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Person { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/a_quickstart_byname/QuickstartByNameApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.a_quickstart_byname; 2 | 3 | import com.linkedbear.spring.basic_dl.a_quickstart_byname.bean.Person; 4 | import org.springframework.beans.factory.BeanFactory; 5 | import org.springframework.context.support.ClassPathXmlApplicationContext; 6 | 7 | public class QuickstartByNameApplication { 8 | 9 | public static void main(String[] args) { 10 | BeanFactory factory = new ClassPathXmlApplicationContext("basic_dl/quickstart-byname.xml"); 11 | Person person = (Person) factory.getBean("person"); 12 | System.out.println(person); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/a_quickstart_byname/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.a_quickstart_byname.bean; 2 | 3 | public class Person { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/b_bytype/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.b_bytype.bean; 2 | 3 | public class Person { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/b_bytype/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.b_bytype.dao; 2 | 3 | import java.util.List; 4 | 5 | public interface DemoDao { 6 | List findAll(); 7 | } 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/b_bytype/dao/impl/DemoDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.b_bytype.dao.impl; 2 | 3 | import com.linkedbear.spring.basic_dl.b_bytype.dao.DemoDao; 4 | 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | public class DemoDaoImpl implements DemoDao { 9 | 10 | @Override 11 | public List findAll() { 12 | return Arrays.asList("aaa", "bbb", "ccc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/c_oftype/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.c_oftype.dao; 2 | 3 | public interface DemoDao { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/c_oftype/dao/impl/DemoMySQLDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.c_oftype.dao.impl; 2 | 3 | import com.linkedbear.spring.basic_dl.c_oftype.dao.DemoDao; 4 | 5 | public class DemoMySQLDao implements DemoDao { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/c_oftype/dao/impl/DemoOracleDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.c_oftype.dao.impl; 2 | 3 | import com.linkedbear.spring.basic_dl.c_oftype.dao.DemoDao; 4 | 5 | public class DemoOracleDao implements DemoDao { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/c_oftype/dao/impl/DemoPostgresDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.c_oftype.dao.impl; 2 | 3 | import com.linkedbear.spring.basic_dl.c_oftype.dao.DemoDao; 4 | 5 | public class DemoPostgresDao implements DemoDao { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/d_withanno/anno/Color.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.d_withanno.anno; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.TYPE) 12 | public @interface Color { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/d_withanno/bean/Black.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.d_withanno.bean; 2 | 3 | import com.linkedbear.spring.basic_dl.d_withanno.anno.Color; 4 | 5 | @Color 6 | public class Black { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/d_withanno/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.d_withanno.bean; 2 | 3 | public class Dog { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/d_withanno/bean/Red.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.d_withanno.bean; 2 | 3 | import com.linkedbear.spring.basic_dl.d_withanno.anno.Color; 4 | 5 | @Color 6 | public class Red { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/e_beannames/BeannamesApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.e_beannames; 2 | 3 | import org.springframework.context.ApplicationContext; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | import java.util.stream.Stream; 7 | 8 | public class BeannamesApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new ClassPathXmlApplicationContext("basic_dl/quickstart-withanno.xml"); 12 | String[] beanNames = ctx.getBeanDefinitionNames(); 13 | Stream.of(beanNames).forEach(System.out::println); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/f_lazylookup/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.f_lazylookup.bean; 2 | 3 | public class Cat { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/basic_dl/f_lazylookup/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.basic_dl.f_lazylookup.bean; 2 | 3 | public class Dog { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/a_type/bean/Ball.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.a_type.bean; 2 | 3 | public class Ball extends Toy { 4 | 5 | public Ball(String name) { 6 | super(name); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/a_type/bean/Car.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.a_type.bean; 2 | 3 | public class Car extends Toy { 4 | 5 | public Car(String name) { 6 | super(name); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/a_type/bean/Child.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.a_type.bean; 2 | 3 | public class Child { 4 | 5 | private String wantToy = "ball"; 6 | 7 | public String getWantToy() { 8 | return wantToy; 9 | } 10 | 11 | @Override 12 | public String toString() { 13 | return "Child{" + "wantToy='" + wantToy + '\'' + '}'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/a_type/bean/Toy.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.a_type.bean; 2 | 3 | public abstract class Toy { 4 | 5 | private String name; 6 | 7 | public Toy(String name) { 8 | System.out.println("生产了一个" + name); 9 | this.name = name; 10 | } 11 | 12 | @Override 13 | public String toString() { 14 | return "Toy{" + "name='" + name + '\'' + '}'; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/b_scope/BeanScopeAnnoApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.b_scope; 2 | 3 | import com.linkedbear.spring.bean.b_scope.bean.Child; 4 | import com.linkedbear.spring.bean.b_scope.config.BeanScopeConfiguration; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 7 | 8 | public class BeanScopeAnnoApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanScopeConfiguration.class); 12 | ctx.getBeansOfType(Child.class).forEach((name, child) -> { 13 | System.out.println(name + " : " + child); 14 | }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/b_scope/BeanScopeXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.b_scope; 2 | 3 | import com.linkedbear.spring.bean.b_scope.bean.Child; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.support.ClassPathXmlApplicationContext; 6 | 7 | public class BeanScopeXmlApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | ApplicationContext ctx = new ClassPathXmlApplicationContext("bean/bean-scope.xml"); 11 | ctx.getBeansOfType(Child.class).forEach((name, child) -> { 12 | System.out.println(name + " : " + child); 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/b_scope/bean/Child.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.b_scope.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | //@Component 6 | public class Child { 7 | 8 | private Toy toy; 9 | 10 | public void setToy(Toy toy) { 11 | this.toy = toy; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return "Child{" + "toy=" + toy + '}'; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/b_scope/bean/Toy.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.b_scope.bean; 2 | 3 | import org.springframework.context.annotation.Scope; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | @Scope("prototype") // ConfigurableBeanFactory.SCOPE_SINGLETON 8 | public class Toy { 9 | public Toy() { 10 | System.out.println("Toy constructor run ..."); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/BeanInstantiateAnnoApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate; 2 | 3 | import com.linkedbear.spring.bean.c_instantiate.config.BeanInstantiateConfiguration; 4 | import org.springframework.context.ApplicationContext; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class BeanInstantiateAnnoApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | ApplicationContext ctx = new AnnotationConfigApplicationContext(BeanInstantiateConfiguration.class); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/bean/Ball.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate.bean; 2 | 3 | public class Ball { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/bean/BallFactoryBean.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate.bean; 2 | 3 | import org.springframework.beans.factory.FactoryBean; 4 | 5 | public class BallFactoryBean implements FactoryBean { 6 | 7 | @Override 8 | public Ball getObject() { 9 | return new Ball(); 10 | } 11 | 12 | @Override 13 | public Class getObjectType() { 14 | return Ball.class; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/bean/Car.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate.bean; 2 | 3 | public class Car { 4 | 5 | public Car() { 6 | System.out.println("Car constructor run ..."); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/bean/CarInstanceFactory.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate.bean; 2 | 3 | public class CarInstanceFactory { 4 | 5 | public Car getCar() { 6 | return new Car(); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/bean/c_instantiate/bean/CarStaticFactory.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.bean.c_instantiate.bean; 2 | 3 | public class CarStaticFactory { 4 | 5 | public static Car getCar() { 6 | return new Car(); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/component/Bar.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.component; 2 | 3 | public class Bar { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/component/Bartender.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.component; 2 | 3 | /** 4 | * 调酒师 5 | */ 6 | public class Bartender { 7 | 8 | private String name; 9 | 10 | public Bartender(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/component/Boss.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.component; 2 | 3 | /** 4 | * 老板 5 | */ 6 | public class Boss { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/component/Waiter.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.component; 2 | 3 | public class Waiter { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/config/BarConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.config; 2 | 3 | import com.linkedbear.spring.configuration.a_module.component.Bar; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class BarConfiguration { 9 | 10 | @Bean 11 | public Bar bbbar() { 12 | return new Bar(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/config/BartenderConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.config; 2 | 3 | import com.linkedbear.spring.configuration.a_module.component.Bartender; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class BartenderConfiguration { 9 | 10 | @Bean 11 | public Bartender zhangxiaosan() { 12 | return new Bartender("张小三"); 13 | } 14 | 15 | @Bean 16 | public Bartender zhangdasan() { 17 | return new Bartender("张大三"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/config/TavernConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.config; 2 | 3 | import com.linkedbear.spring.configuration.a_module.anno.EnableTavern; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @EnableTavern 8 | public class TavernConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/a_module/selector/BarImportSelector.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.a_module.selector; 2 | 3 | import com.linkedbear.spring.configuration.a_module.component.Bar; 4 | import com.linkedbear.spring.configuration.a_module.config.BarConfiguration; 5 | import org.springframework.context.annotation.ImportSelector; 6 | import org.springframework.core.type.AnnotationMetadata; 7 | 8 | public class BarImportSelector implements ImportSelector { 9 | 10 | @Override 11 | public String[] selectImports(AnnotationMetadata importingClassMetadata) { 12 | return new String[] {Bar.class.getName(), BarConfiguration.class.getName()}; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/component/Bar.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.component; 2 | 3 | public class Bar { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/component/Bartender.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.component; 2 | 3 | /** 4 | * 调酒师 5 | */ 6 | public class Bartender { 7 | 8 | private String name; 9 | 10 | public Bartender(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/component/Boss.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.component; 2 | 3 | /** 4 | * 老板 5 | */ 6 | public class Boss { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/component/Waiter.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.component; 2 | 3 | public class Waiter { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/config/BarConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.config; 2 | 3 | import com.linkedbear.spring.configuration.b_profile.component.Bar; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class BarConfiguration { 9 | 10 | @Bean 11 | public Bar bbbar() { 12 | return new Bar(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/config/BartenderConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.config; 2 | 3 | import com.linkedbear.spring.configuration.b_profile.component.Bartender; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Profile; 7 | 8 | @Configuration 9 | @Profile("city") 10 | public class BartenderConfiguration { 11 | 12 | @Bean 13 | public Bartender zhangxiaosan() { 14 | return new Bartender("张小三"); 15 | } 16 | 17 | @Bean 18 | public Bartender zhangdasan() { 19 | return new Bartender("张大三"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/config/TavernConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.config; 2 | 3 | import com.linkedbear.spring.configuration.b_profile.anno.EnableTavern; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @EnableTavern 8 | public class TavernConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/b_profile/selector/BarImportSelector.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.b_profile.selector; 2 | 3 | import com.linkedbear.spring.configuration.b_profile.component.Bar; 4 | import com.linkedbear.spring.configuration.b_profile.config.BarConfiguration; 5 | import org.springframework.context.annotation.ImportSelector; 6 | import org.springframework.core.type.AnnotationMetadata; 7 | 8 | public class BarImportSelector implements ImportSelector { 9 | 10 | @Override 11 | public String[] selectImports(AnnotationMetadata importingClassMetadata) { 12 | return new String[] {Bar.class.getName(), BarConfiguration.class.getName()}; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/TavernConditionalApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional; 2 | 3 | import com.linkedbear.spring.configuration.c_conditional.config.TavernConfiguration; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | import java.util.stream.Stream; 7 | 8 | public class TavernConditionalApplication { 9 | 10 | public static void main(String[] args) throws Exception { 11 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(TavernConfiguration.class); 12 | Stream.of(ctx.getBeanDefinitionNames()).forEach(System.out::println); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/component/Bar.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.component; 2 | 3 | public class Bar { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/component/Bartender.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.component; 2 | 3 | /** 4 | * 调酒师 5 | */ 6 | public class Bartender { 7 | 8 | private String name; 9 | 10 | public Bartender(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/component/Boss.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.component; 2 | 3 | /** 4 | * 老板 5 | */ 6 | public class Boss { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/component/Waiter.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.component; 2 | 3 | public class Waiter { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/condition/ExistBossCondition.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.condition; 2 | 3 | import com.linkedbear.spring.configuration.c_conditional.component.Boss; 4 | import org.springframework.context.annotation.Condition; 5 | import org.springframework.context.annotation.ConditionContext; 6 | import org.springframework.core.type.AnnotatedTypeMetadata; 7 | 8 | public class ExistBossCondition implements Condition { 9 | 10 | @Override 11 | public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { 12 | return context.getBeanFactory().containsBeanDefinition(Boss.class.getName()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/config/BartenderConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.config; 2 | 3 | import com.linkedbear.spring.configuration.c_conditional.component.Bartender; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.context.annotation.Profile; 7 | 8 | @Configuration 9 | @Profile("city") 10 | public class BartenderConfiguration { 11 | 12 | @Bean 13 | public Bartender zhangxiaosan() { 14 | return new Bartender("张小三"); 15 | } 16 | 17 | @Bean 18 | public Bartender zhangdasan() { 19 | return new Bartender("张大三"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/config/TavernConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.config; 2 | 3 | import com.linkedbear.spring.configuration.c_conditional.anno.EnableTavern; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @EnableTavern 8 | public class TavernConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/c_conditional/selector/BarImportSelector.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.c_conditional.selector; 2 | 3 | import com.linkedbear.spring.configuration.c_conditional.component.Bar; 4 | import com.linkedbear.spring.configuration.c_conditional.config.BarConfiguration; 5 | import org.springframework.context.annotation.ImportSelector; 6 | import org.springframework.core.type.AnnotationMetadata; 7 | 8 | public class BarImportSelector implements ImportSelector { 9 | 10 | @Override 11 | public String[] selectImports(AnnotationMetadata importingClassMetadata) { 12 | return new String[] {Bar.class.getName(), BarConfiguration.class.getName()}; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/d_enablejdbc/annotation/ConditionalOnClassName.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.d_enablejdbc.annotation; 2 | 3 | import com.linkedbear.spring.configuration.d_enablejdbc.components.OnClassNameConditional; 4 | import org.springframework.context.annotation.Conditional; 5 | 6 | import java.lang.annotation.Documented; 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | @Documented 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target({ElementType.TYPE, ElementType.METHOD}) 15 | @Conditional(OnClassNameConditional.class) 16 | public @interface ConditionalOnClassName { 17 | 18 | String value(); 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/d_enablejdbc/config/EnableJdbc.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.d_enablejdbc.config; 2 | 3 | import org.springframework.context.annotation.Import; 4 | 5 | import java.lang.annotation.Documented; 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | @Documented 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Target(ElementType.TYPE) 14 | @Import(JdbcConfiguration.class) 15 | public @interface EnableJdbc { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/e_enablejdbc/annotation/ConditionalOnClassName.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.e_enablejdbc.annotation; 2 | 3 | import com.linkedbear.spring.configuration.e_enablejdbc.components.OnClassNameConditional; 4 | import org.springframework.context.annotation.Conditional; 5 | 6 | import java.lang.annotation.Documented; 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | @Documented 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target({ElementType.TYPE, ElementType.METHOD}) 15 | @Conditional(OnClassNameConditional.class) 16 | public @interface ConditionalOnClassName { 17 | 18 | String value(); 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/e_enablejdbc/config/EnableJdbc.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.e_enablejdbc.config; 2 | 3 | import com.linkedbear.spring.configuration.e_enablejdbc.components.JdbcConfigSelector; 4 | import org.springframework.context.annotation.Import; 5 | 6 | import java.lang.annotation.Documented; 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | @Documented 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.TYPE) 15 | @Import(JdbcConfigSelector.class) 16 | public @interface EnableJdbc { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/f_enablejdbc/config/EnableJdbc.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.f_enablejdbc.config; 2 | 3 | import org.springframework.context.annotation.Import; 4 | 5 | import java.lang.annotation.Documented; 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | @Documented 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Target(ElementType.TYPE) 14 | @Import(JdbcConfiguration.class) 15 | public @interface EnableJdbc { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/f_enablejdbc/config/JdbcConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.f_enablejdbc.config; 2 | 3 | import org.apache.commons.dbutils.QueryRunner; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import javax.sql.DataSource; 8 | 9 | @Configuration 10 | public class JdbcConfiguration { 11 | 12 | @Bean 13 | public QueryRunner queryRunner(DataSource dataSource) { 14 | return new QueryRunner(dataSource); 15 | } 16 | 17 | @Bean 18 | public DataSourceRegisterPostProcessor dataSourceRegisterPostProcessor() { 19 | return new DataSourceRegisterPostProcessor(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/z_spi/JdkSpiApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.z_spi; 2 | 3 | import com.linkedbear.spring.configuration.z_spi.bean.DemoDao; 4 | 5 | import java.util.ServiceLoader; 6 | 7 | public class JdkSpiApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | ServiceLoader serviceLoader = ServiceLoader.load(DemoDao.class); 11 | serviceLoader.iterator().forEachRemaining(dao -> { 12 | System.out.println(dao); 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/z_spi/bean/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.z_spi.bean; 2 | 3 | public interface DemoDao { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/z_spi/bean/DemoMySQLDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.z_spi.bean; 2 | 3 | public class DemoMySQLDaoImpl implements DemoDao { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/configuration/z_spi/bean/DemoOracleDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.configuration.z_spi.bean; 2 | 3 | public class DemoOracleDaoImpl implements DemoDao { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/a_beanfactory/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.a_beanfactory.bean; 2 | 3 | public class Cat { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/a_beanfactory/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.a_beanfactory.bean; 2 | 3 | public class Dog { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/b_applicationcontext/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.b_applicationcontext.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Cat { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/b_applicationcontext/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.b_applicationcontext.bean; 2 | 3 | public class Dog { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/b_applicationcontext/config/CatConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.b_applicationcontext.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | @Configuration 7 | @ComponentScan("com.linkedbear.spring.container.b_applicationcontext.bean") 8 | public class CatConfiguration { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/container/b_applicationcontext/config/DogConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.container.b_applicationcontext.config; 2 | 3 | import com.linkedbear.spring.container.b_applicationcontext.bean.Dog; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class DogConfiguration { 9 | 10 | @Bean 11 | public Dog dog() { 12 | return new Dog(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/a_quickstart/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.a_quickstart.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Person { 7 | 8 | private String name; 9 | 10 | public String getName() { 11 | return name; 12 | } 13 | 14 | public void setName(String name) { 15 | this.name = name; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/a_quickstart/config/BeanDefinitionQuickstartConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.a_quickstart.config; 2 | 3 | import com.linkedbear.spring.definition.a_quickstart.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class BeanDefinitionQuickstartConfiguration { 9 | 10 | @Bean 11 | public Person person() { 12 | return new Person(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/b_registry/BeanDefinitionRegistryApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.b_registry; 2 | 3 | import com.linkedbear.spring.definition.b_registry.bean.Person; 4 | import com.linkedbear.spring.definition.b_registry.config.BeanDefinitionRegistryConfiguration; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class BeanDefinitionRegistryApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 11 | BeanDefinitionRegistryConfiguration.class); 12 | Person person = ctx.getBean(Person.class); 13 | System.out.println(person); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/b_registry/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.b_registry.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Person{" + "name='" + name + '\'' + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/b_registry/config/BeanDefinitionRegistryConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.b_registry.config; 2 | 3 | import com.linkedbear.spring.definition.b_registry.register.PersonRegister; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.Import; 6 | 7 | @Configuration 8 | @Import(PersonRegister.class) 9 | public class BeanDefinitionRegistryConfiguration { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/c_removedefinition/RemoveBeanDefinitionApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.c_removedefinition; 2 | 3 | import com.linkedbear.spring.definition.c_removedefinition.bean.Person; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | public class RemoveBeanDefinitionApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("definition/remove-definitions.xml"); 10 | Person aqiang = (Person) ctx.getBean("aqiang"); 11 | System.out.println(aqiang); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/c_removedefinition/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.c_removedefinition.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | private String sex; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public String getSex() { 17 | return sex; 18 | } 19 | 20 | public void setSex(String sex) { 21 | this.sex = sex; 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return "Person{" + "name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/d_merge/bean/Animal.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.d_merge.bean; 2 | 3 | public abstract class Animal { 4 | 5 | private Person person; 6 | 7 | public Person getPerson() { 8 | return person; 9 | } 10 | 11 | public void setPerson(Person person) { 12 | this.person = person; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/d_merge/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.d_merge.bean; 2 | 3 | public class Cat extends Animal { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Cat{" + "name=" + name + ", person='" + getPerson() + '\'' + "}"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/definition/d_merge/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.definition.d_merge.bean; 2 | 3 | public class Person { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/environment/a_quickstart/EnvironmentQuickstartApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.environment.a_quickstart; 2 | 3 | import com.linkedbear.spring.environment.a_quickstart.bean.EnvironmentHolder; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class EnvironmentQuickstartApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 10 | "com.linkedbear.spring.environment.a_quickstart.bean"); 11 | EnvironmentHolder environmentHolder = ctx.getBean(EnvironmentHolder.class); 12 | environmentHolder.printEnvironment(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/environment/a_quickstart/bean/EnvironmentHolder.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.environment.a_quickstart.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.core.env.Environment; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class EnvironmentHolder { 9 | 10 | @Autowired 11 | Environment environment; 12 | 13 | public void printEnvironment() { 14 | System.out.println(environment); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/environment/b_api/EnvironmentApiApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.environment.b_api; 2 | 3 | import com.linkedbear.spring.environment.b_api.bean.EnvironmentHolder; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class EnvironmentApiApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("com.linkedbear.spring.environment.b_api"); 10 | EnvironmentHolder environmentHolder = ctx.getBean(EnvironmentHolder.class); 11 | environmentHolder.printEnvironment(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/environment/b_api/bean/EnvironmentHolder.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.environment.b_api.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.core.env.Environment; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.Arrays; 8 | 9 | @Component 10 | public class EnvironmentHolder { 11 | 12 | @Autowired 13 | Environment environment; 14 | 15 | public void printEnvironment() { 16 | System.out.println(Arrays.toString(environment.getDefaultProfiles())); 17 | System.out.println(environment.getProperty("jdbc.url")); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/environment/b_api/config/EnvironmentPropertyConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.environment.b_api.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.PropertySource; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.environment.b_api.bean") 9 | @PropertySource("propertysource/jdbc.properties") 10 | public class EnvironmentPropertyConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/a_quickstart/QuickstartListenerApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.a_quickstart; 2 | 3 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 | 5 | public class QuickstartListenerApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | System.out.println("准备初始化IOC容器。。。"); 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 10 | "com.linkedbear.spring.event.a_quickstart"); 11 | System.out.println("IOC容器初始化完成。。。"); 12 | ctx.close(); 13 | System.out.println("IOC容器关闭。。。"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/a_quickstart/listener/ContextClosedApplicationListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.a_quickstart.listener; 2 | 3 | import org.springframework.context.event.ContextClosedEvent; 4 | import org.springframework.context.event.EventListener; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class ContextClosedApplicationListener { 9 | 10 | @EventListener 11 | public void onContextClosedEvent(ContextClosedEvent event) { 12 | System.out.println("ContextClosedApplicationListener监听到ContextClosedEvent事件!"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/a_quickstart/listener/ContextRefreshedApplicationListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.a_quickstart.listener; 2 | 3 | import org.springframework.context.ApplicationListener; 4 | import org.springframework.context.event.ContextRefreshedEvent; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class ContextRefreshedApplicationListener implements ApplicationListener { 9 | 10 | @Override 11 | public void onApplicationEvent(ContextRefreshedEvent event) { 12 | System.out.println("ContextRefreshedApplicationListener监听到ContextRefreshedEvent事件!"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/b_registerevent/RegisterEventApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.b_registerevent; 2 | 3 | import com.linkedbear.spring.event.b_registerevent.service.RegisterService; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class RegisterEventApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 10 | "com.linkedbear.spring.event.b_registerevent"); 11 | RegisterService registerService = ctx.getBean(RegisterService.class); 12 | registerService.register("张大三"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/b_registerevent/event/RegisterSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.b_registerevent.event; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | /** 6 | * 注册成功的事件 7 | */ 8 | public class RegisterSuccessEvent extends ApplicationEvent { 9 | 10 | public RegisterSuccessEvent(Object source) { 11 | super(source); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/b_registerevent/listener/EmailSenderListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.b_registerevent.listener; 2 | 3 | import com.linkedbear.spring.event.b_registerevent.event.RegisterSuccessEvent; 4 | import org.springframework.context.event.EventListener; 5 | import org.springframework.core.annotation.Order; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | public class EmailSenderListener { 10 | 11 | @EventListener 12 | // @Order(Integer.MAX_VALUE - 1) 13 | public void onRegisterSuccess(RegisterSuccessEvent event) { 14 | System.out.println("监听到用户注册成功,发送邮件中。。。"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/b_registerevent/listener/MessageSenderListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.b_registerevent.listener; 2 | 3 | import com.linkedbear.spring.event.b_registerevent.event.RegisterSuccessEvent; 4 | import org.springframework.context.event.EventListener; 5 | import org.springframework.core.annotation.Order; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | public class MessageSenderListener { 10 | 11 | @EventListener 12 | @Order(0) 13 | public void onRegisterSuccess(RegisterSuccessEvent event) { 14 | System.out.println("监听到用户注册成功,发送站内信。。。"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/b_registerevent/listener/SmsSenderListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.b_registerevent.listener; 2 | 3 | import com.linkedbear.spring.event.b_registerevent.event.RegisterSuccessEvent; 4 | import org.springframework.context.ApplicationListener; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class SmsSenderListener implements ApplicationListener { 9 | 10 | @Override 11 | public void onApplicationEvent(RegisterSuccessEvent event) { 12 | System.out.println("监听到用户注册成功,发送短信。。。"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/c_hierarchical/component/HierarchicalEvent.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.c_hierarchical.component; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | public class HierarchicalEvent extends ApplicationEvent { 6 | 7 | public HierarchicalEvent(Object source) { 8 | super(source); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/c_hierarchical/component/HierarchicalEventListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.c_hierarchical.component; 2 | 3 | import org.springframework.context.ApplicationListener; 4 | 5 | public class HierarchicalEventListener implements ApplicationListener { 6 | 7 | @Override 8 | public void onApplicationEvent(HierarchicalEvent event) { 9 | System.out.println("监听到HierarchicalEvent:" + event.toString()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/d_payload/component/PayloadIntegerApplicationListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.d_payload.component; 2 | 3 | import org.springframework.context.ApplicationListener; 4 | import org.springframework.context.PayloadApplicationEvent; 5 | 6 | public class PayloadIntegerApplicationListener implements ApplicationListener> { 7 | 8 | @Override 9 | public void onApplicationEvent(PayloadApplicationEvent event) { 10 | System.out.println("监听到PayloadApplicationEvent[Integer] ------> " + event.getPayload()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/event/d_payload/component/PayloadObjectApplicationListener.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.event.d_payload.component; 2 | 3 | import org.springframework.context.ApplicationListener; 4 | import org.springframework.context.PayloadApplicationEvent; 5 | 6 | public class PayloadObjectApplicationListener implements ApplicationListener { 7 | 8 | @Override 9 | public void onApplicationEvent(PayloadApplicationEvent event) { 10 | System.out.println("监听到PayloadApplicationEvent ------> " + event.getPayload()); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/a_initmethod/InitMethodAnnoApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.a_initmethod; 2 | 3 | import com.linkedbear.spring.lifecycle.a_initmethod.config.InitMethodConfiguration; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class InitMethodAnnoApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(InitMethodConfiguration.class); 10 | System.out.println("IOC容器初始化完成。。。"); 11 | Thread.sleep(3000); 12 | ctx.close(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/a_initmethod/InitMethodXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.a_initmethod; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | 5 | public class InitMethodXmlApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | System.out.println("准备初始化IOC容器。。。"); 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("lifecycle/bean-initmethod.xml"); 10 | System.out.println("IOC容器初始化完成。。。"); 11 | System.out.println(); 12 | System.out.println("准备销毁IOC容器。。。"); 13 | ctx.close(); 14 | System.out.println("IOC容器销毁完成。。。"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/a_initmethod/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.a_initmethod.bean; 2 | 3 | public class Cat { 4 | 5 | private String name; 6 | 7 | public Cat() { 8 | System.out.println("Cat 构造方法执行了。。。"); 9 | } 10 | 11 | public void setName(String name) { 12 | System.out.println("setName方法执行了。。。"); 13 | this.name = name; 14 | } 15 | 16 | public void init() { 17 | System.out.println(name + "被初始化了。。。"); 18 | } 19 | 20 | public void destroy() { 21 | System.out.println(name + "被销毁了。。。"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/a_initmethod/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.a_initmethod.bean; 2 | 3 | public class Dog { 4 | 5 | private String name; 6 | 7 | public void setName(String name) { 8 | this.name = name; 9 | } 10 | 11 | public void init() { 12 | System.out.println(name + "被初始化了。。。"); 13 | } 14 | 15 | public void destroy() { 16 | System.out.println(name + "被销毁了。。。"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/a_initmethod/config/InitMethodConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.a_initmethod.config; 2 | 3 | import com.linkedbear.spring.lifecycle.a_initmethod.bean.Dog; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class InitMethodConfiguration { 9 | 10 | @Bean(initMethod = "init", destroyMethod = "destroy") 11 | public Dog dog() { 12 | Dog dog = new Dog(); 13 | dog.setName("wangwang"); 14 | return dog; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/b_jsr250/config/JSR250Configuration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.b_jsr250.config; 2 | 3 | import com.linkedbear.spring.lifecycle.b_jsr250.bean.Pen2; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | //@ComponentScan("com.linkedbear.spring.lifecycle.b_jsr250.bean") 10 | public class JSR250Configuration { 11 | 12 | @Bean(initMethod = "open", destroyMethod = "close") 13 | public Pen2 pen() { 14 | return new Pen2(); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/c_initializingbean/config/InitializingDisposableConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.c_initializingbean.config; 2 | 3 | import com.linkedbear.spring.lifecycle.c_initializingbean.bean.Pen3; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class InitializingDisposableConfiguration { 9 | 10 | @Bean(initMethod = "open", destroyMethod = "close") 11 | public Pen3 pen() { 12 | return new Pen3(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/d_prototype/config/PrototypeLifecycleConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.d_prototype.config; 2 | 3 | import com.linkedbear.spring.lifecycle.d_prototype.bean.Pen; 4 | import org.springframework.beans.factory.config.ConfigurableBeanFactory; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.context.annotation.Scope; 8 | 9 | @Configuration 10 | public class PrototypeLifecycleConfiguration { 11 | 12 | @Bean(initMethod = "open", destroyMethod = "off") 13 | @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 14 | public Pen pen() { 15 | return new Pen(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/e_source/config/LifecycleDestructionPostProcessor.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.e_source.config; 2 | 3 | import com.linkedbear.spring.lifecycle.e_source.bean.Cat; 4 | import org.springframework.beans.BeansException; 5 | import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor; 6 | 7 | public class LifecycleDestructionPostProcessor implements DestructionAwareBeanPostProcessor { 8 | 9 | @Override 10 | public void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException { 11 | if (bean instanceof Cat) { 12 | Cat cat = (Cat) bean; 13 | System.out.println(cat.getName() + "被放走了 ......"); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/lifecycle/e_source/config/LifecycleSourceConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.lifecycle.e_source.config; 2 | 3 | import com.linkedbear.spring.lifecycle.e_source.bean.Person; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.ComponentScan; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | @Configuration 9 | @ComponentScan("com.linkedbear.spring.lifecycle.e_source.bean") 10 | public class LifecycleSourceConfiguration { 11 | 12 | @Bean(initMethod = "initMethod", destroyMethod = "destroyMethod") 13 | public Person person() { 14 | Person person = new Person(); 15 | person.setName("lisi"); 16 | return person; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/a_quickstart/BeanPostProcessorQuickstartApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.a_quickstart; 2 | 3 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 | 5 | public class BeanPostProcessorQuickstartApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 9 | "com.linkedbear.spring.postprocessor.a_quickstart"); 10 | ctx.close(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/a_quickstart/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.a_quickstart.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Cat { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/a_quickstart/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.a_quickstart.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Dog { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/b_getproperty/PostProcessorGetPropertyApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.b_getproperty; 2 | 3 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 | 5 | public class PostProcessorGetPropertyApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 9 | "com.linkedbear.spring.postprocessor.b_getproperty"); 10 | ctx.close(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/b_getproperty/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.b_getproperty.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Cat { 7 | 8 | private String name; 9 | 10 | public String getName() { 11 | return name; 12 | } 13 | 14 | public void setName(String name) { 15 | this.name = name; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "Cat{" + "name='" + name + '\'' + '}'; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/c_executetime/BeanPostProcessorExecuteTimeApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.c_executetime; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | 5 | public class BeanPostProcessorExecuteTimeApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( 9 | "postprocessor/processor-executetime.xml"); 10 | ctx.close(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/c_executetime/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.c_executetime.bean; 2 | 3 | import org.springframework.beans.factory.InitializingBean; 4 | 5 | import javax.annotation.PostConstruct; 6 | 7 | public class Dog implements InitializingBean { 8 | 9 | public void initMethod() { 10 | System.out.println("initMethod ..."); 11 | } 12 | 13 | @PostConstruct 14 | public void postConstruct() { 15 | System.out.println("PostConstruct ..."); 16 | } 17 | 18 | @Override 19 | public void afterPropertiesSet() throws Exception { 20 | System.out.println("InitializingBean ..."); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/d_factorybean/FactoryBeanPostProcessorApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.d_factorybean; 2 | 3 | import com.linkedbear.spring.postprocessor.d_factorybean.bean.Egg; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class FactoryBeanPostProcessorApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 10 | "com.linkedbear.spring.postprocessor.d_factorybean"); 11 | Egg egg = ctx.getBean(Egg.class); 12 | System.out.println(egg); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/d_factorybean/bean/Egg.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.d_factorybean.bean; 2 | 3 | public class Egg { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/d_factorybean/bean/Hen.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.d_factorybean.bean; 2 | 3 | import org.springframework.beans.factory.FactoryBean; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class Hen implements FactoryBean { 8 | 9 | @Override 10 | public Egg getObject() throws Exception { 11 | return new Egg(); 12 | } 13 | 14 | @Override 15 | public Class getObjectType() { 16 | return Egg.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/e_instantiation/bean/Ball.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.e_instantiation.bean; 2 | 3 | public class Ball { 4 | 5 | private String id; 6 | 7 | public String getId() { 8 | return id; 9 | } 10 | 11 | public void setId(String id) { 12 | this.id = id; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Ball{" + "id='" + id + '\'' + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/f_destruction/DestructionPostProcessorApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.f_destruction; 2 | 3 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 | 5 | public class DestructionPostProcessorApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 9 | "com.linkedbear.spring.postprocessor.f_destruction"); 10 | ctx.close(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/g_mergedefinition/MergeDefinitionPostProcessorApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.g_mergedefinition; 2 | 3 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 | 5 | public class MergeDefinitionPostProcessorApplication { 6 | 7 | public static void main(String[] args) throws Exception { 8 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 9 | "com.linkedbear.spring.postprocessor.g_mergedefinition"); 10 | ctx.close(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/g_mergedefinition/bean/Animal.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.g_mergedefinition.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | 5 | public abstract class Animal { 6 | 7 | private Person person; 8 | 9 | public Person getPerson() { 10 | return person; 11 | } 12 | 13 | @Autowired 14 | public void setPerson(Person person) { 15 | System.out.println("Animal setPerson run ......"); 16 | this.person = person; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/g_mergedefinition/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.g_mergedefinition.bean; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class Cat extends Animal { 8 | 9 | public Cat() { 10 | System.out.println("Cat constructor run ......"); 11 | } 12 | 13 | @Value("咪咪") 14 | private String name; 15 | 16 | @Override 17 | public String toString() { 18 | return "Cat {person: " + this.getPerson() + ", name: " + name + "}"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/g_mergedefinition/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.g_mergedefinition.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Person { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/h_factory/FactoryPostProcessorApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.h_factory; 2 | 3 | public class FactoryPostProcessorApplication { 4 | 5 | public static void main(String[] args) throws Exception { 6 | 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/h_factoryprocessor/FactoryProcessorApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.h_factoryprocessor; 2 | 3 | import com.linkedbear.spring.postprocessor.h_factoryprocessor.bean.Red; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class FactoryProcessorApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 10 | "com.linkedbear.spring.postprocessor.h_factoryprocessor"); 11 | Red red = ctx.getBean(Red.class); 12 | System.out.println(red); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/h_factoryprocessor/bean/Color.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.h_factoryprocessor.bean; 2 | 3 | public abstract class Color { 4 | 5 | public Color() { 6 | System.out.println("Color constructor run ......"); 7 | } 8 | 9 | protected String name; 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | public void setName(String name) { 16 | this.name = name; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/h_factoryprocessor/bean/Green.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.h_factoryprocessor.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Green extends Color { 7 | 8 | @Override 9 | public String toString() { 10 | return "Green{" + "name='" + name + '\'' + "}"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/h_factoryprocessor/bean/Red.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.h_factoryprocessor.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Red extends Color { 7 | 8 | @Override 9 | public String toString() { 10 | return "Red{" + "name='" + name + '\'' + "}"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/i_registryprocessor/bean/Animal.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.i_registryprocessor.bean; 2 | 3 | public abstract class Animal { 4 | 5 | protected String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/i_registryprocessor/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.i_registryprocessor.bean; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | @Component 6 | public class Cat extends Animal { 7 | 8 | @Override 9 | public String toString() { 10 | return "Cat{" + "name='" + name + '\'' + "}"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/postprocessor/i_registryprocessor/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.postprocessor.i_registryprocessor.bean; 2 | 3 | public class Dog extends Animal { 4 | 5 | @Override 6 | public String toString() { 7 | return "Dog{" + "name='" + name + '\'' + '}'; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/programmatic/a_quickstart/bean/Person.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.programmatic.a_quickstart.bean; 2 | 3 | public class Person { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "Person{" + "name='" + name + '\'' + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/programmatic/b_di/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.programmatic.b_di.bean; 2 | 3 | public class Cat extends Animal { 4 | 5 | @Override 6 | public String toString() { 7 | return "Cat{" + "name='" + name + '\'' + ", person=" + person + '}'; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/java/com/linkedbear/spring/programmatic/b_di/bean/Dog.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.programmatic.b_di.bean; 2 | 3 | public class Dog extends Animal { 4 | 5 | @Override 6 | public String toString() { 7 | return "Dog{" + "name='" + name + '\'' + ", person=" + person + '}'; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/META-INF/services/com.linkedbear.spring.configuration.e_enablejdbc.config.AbstractJdbcConfiguration: -------------------------------------------------------------------------------- 1 | com.linkedbear.spring.configuration.e_enablejdbc.config.MySQLJdbcConfiguration 2 | com.linkedbear.spring.configuration.e_enablejdbc.config.OracleJdbcConfiguration 3 | com.linkedbear.spring.configuration.e_enablejdbc.config.H2JdbcConfiguration -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/META-INF/services/com.linkedbear.spring.configuration.z_spi.bean.DemoDao: -------------------------------------------------------------------------------- 1 | com.linkedbear.spring.configuration.z_spi.bean.DemoMySQLDaoImpl 2 | com.linkedbear.spring.configuration.z_spi.bean.DemoOracleDaoImpl -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | com.linkedbear.spring.configuration.z_spi.bean.DemoDao=\ 2 | com.linkedbear.spring.configuration.z_spi.bean.DemoMySQLDaoImpl,\ 3 | com.linkedbear.spring.configuration.z_spi.bean.DemoOracleDaoImpl 4 | 5 | com.linkedbear.spring.configuration.e_enablejdbc.config.EnableJdbc=\ 6 | com.linkedbear.spring.configuration.e_enablejdbc.config.MySQLJdbcConfiguration,\ 7 | com.linkedbear.spring.configuration.e_enablejdbc.config.OracleJdbcConfiguration,\ 8 | com.linkedbear.spring.configuration.e_enablejdbc.config.H2JdbcConfiguration 9 | 10 | java.sql.Driver=\ 11 | com.mysql.jdbc.Driver,\ 12 | oracle.jdbc.driver.OracleDriver,\ 13 | org.h2.Driver -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/annotation/import-anno.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/annotation/xml-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_di/value/red.properties: -------------------------------------------------------------------------------- 1 | red.name=red-value-byproperties 2 | red.order=1 -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_dl/quickstart-byname.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_dl/quickstart-bytype.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_dl/quickstart-lazylookup.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_dl/quickstart-oftype.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/basic_dl/quickstart-withanno.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/bean/bean-type.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/container/listable-container.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/definition/definition-beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/enablejdbc/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 2 | jdbc.username=root 3 | jdbc.password=123456 -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/lifecycle/bean-initmethod.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/lifecycle/bean-prototype.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/metadata/metadata-info.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/postprocessor/processor-instantiation.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/programmatic/programmatic-components.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/propertysource/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.url=jdbc:mysql://localhost:3306/test 2 | jdbc.driver-class-name=com.mysql.jdbc.Driver 3 | jdbc.username=root 4 | jdbc.password=123456 -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/propertysource/jdbc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | jdbc:mysql://localhost:3306/test 5 | com.mysql.jdbc.Driver 6 | root 7 | 123456 8 | -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/propertysource/jdbc.yml: -------------------------------------------------------------------------------- 1 | yml: 2 | jdbc: 3 | url: jdbc:mysql://localhost:3306/test 4 | driver-class-name: com.mysql.jdbc.Driver 5 | username: root 6 | password: 123456 -------------------------------------------------------------------------------- /spring-01-ioc/src/main/resources/resource/Dog.txt: -------------------------------------------------------------------------------- 1 | wangwangwang -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/a_xmlaspect/component/Logger.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.a_xmlaspect.component; 2 | 3 | public class Logger { 4 | 5 | public void beforePrint() { 6 | System.out.println("Logger beforePrint run ......"); 7 | } 8 | 9 | public void afterPrint() { 10 | System.out.println("Logger afterPrint run ......"); 11 | } 12 | 13 | public void afterReturningPrint() { 14 | System.out.println("Logger afterReturningPrint run ......"); 15 | } 16 | 17 | public void afterThrowingPrint() { 18 | System.out.println("Logger afterThrowingPrint run ......"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/a_xmlaspect/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.a_xmlaspect.service; 2 | 3 | import java.util.List; 4 | 5 | public interface OrderService { 6 | 7 | void createOrder(); 8 | 9 | void deleteOrderById(String id); 10 | 11 | String getOrderById(String id); 12 | 13 | List findAll(); 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/b_aspectj/AnnotationAspectJApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.b_aspectj; 2 | 3 | import com.linkedbear.spring.aop.b_aspectj.config.AspectJAOPConfiguration; 4 | import com.linkedbear.spring.aop.b_aspectj.service.FinanceService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class AnnotationAspectJApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 11 | AspectJAOPConfiguration.class); 12 | FinanceService financeService = ctx.getBean(FinanceService.class); 13 | financeService.addMoney(123.45); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/b_aspectj/component/Log.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.b_aspectj.component; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.METHOD) 12 | public @interface Log { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/b_aspectj/config/AspectJAOPConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.b_aspectj.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.aop.b_aspectj") 9 | @EnableAspectJAutoProxy 10 | public class AspectJAOPConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/b_aspectj/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.b_aspectj.service; 2 | 3 | import java.util.List; 4 | 5 | public interface OrderService { 6 | 7 | void createOrder(); 8 | 9 | void deleteOrderById(String id); 10 | 11 | String getOrderById(String id); 12 | 13 | List findAll(); 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/c_joinpoint/component/Log.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.c_joinpoint.component; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.METHOD) 12 | public @interface Log { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/c_joinpoint/config/AspectJJoinPointAOPConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.c_joinpoint.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.aop.c_joinpoint") 9 | @EnableAspectJAutoProxy 10 | public class AspectJJoinPointAOPConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/c_joinpoint/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.c_joinpoint.service; 2 | 3 | import java.util.List; 4 | 5 | public interface OrderService { 6 | 7 | void createOrder(); 8 | 9 | void deleteOrderById(String id); 10 | 11 | String getOrderById(String id); 12 | 13 | List findAll(); 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/d_order/AspectOrderApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.d_order; 2 | 3 | import com.linkedbear.spring.aop.d_order.config.AspectOrderConfiguration; 4 | import com.linkedbear.spring.aop.d_order.service.UserService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class AspectOrderApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AspectOrderConfiguration.class); 11 | UserService userService = ctx.getBean(UserService.class); 12 | userService.saveUser("abc"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/d_order/aspect/LogAspect.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.d_order.aspect; 2 | 3 | import org.aspectj.lang.annotation.Aspect; 4 | import org.aspectj.lang.annotation.Before; 5 | import org.springframework.core.annotation.Order; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | @Aspect 10 | @Order(0) 11 | public class LogAspect { 12 | 13 | @Before("execution(* com.linkedbear.spring.aop.d_order.service.UserService.*(..))") 14 | public void printLog() { 15 | System.out.println("LogAspect 打印日志 ......"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/d_order/aspect/TransactionAspect.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.d_order.aspect; 2 | 3 | import org.aspectj.lang.annotation.Aspect; 4 | import org.aspectj.lang.annotation.Before; 5 | import org.springframework.core.Ordered; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | @Aspect 10 | public class TransactionAspect implements Ordered { 11 | 12 | @Before("execution(* com.linkedbear.spring.aop.d_order.service.UserService.*(..))") 13 | public void beginTransaction() { 14 | System.out.println("TransactionAspect 开启事务 ......"); 15 | } 16 | 17 | @Override 18 | public int getOrder() { 19 | return Ordered.LOWEST_PRECEDENCE - 1; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/d_order/config/AspectOrderConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.d_order.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.aop.d_order") 9 | @EnableAspectJAutoProxy 10 | public class AspectOrderConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/d_order/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.d_order.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class UserService { 7 | 8 | public void saveUser(String id) { 9 | System.out.println("UserService 保存用户" + id); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/e_aopcontext/AopContextApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.e_aopcontext; 2 | 3 | import com.linkedbear.spring.aop.e_aopcontext.config.AopContextConfiguration; 4 | import com.linkedbear.spring.aop.e_aopcontext.service.UserService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class AopContextApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AopContextConfiguration.class); 11 | UserService userService = ctx.getBean(UserService.class); 12 | userService.update("abc", "def"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/e_aopcontext/aspect/LogAspect.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.e_aopcontext.aspect; 2 | 3 | import org.aspectj.lang.annotation.Aspect; 4 | import org.aspectj.lang.annotation.Before; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | @Aspect 9 | public class LogAspect { 10 | 11 | @Before("execution(* com.linkedbear.spring.aop.e_aopcontext.service.UserService.*(..))") 12 | public void beforePrint() { 13 | System.out.println("LogAspect 前置通知 ......"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/e_aopcontext/config/AopContextConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.e_aopcontext.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.aop.e_aopcontext") 9 | @EnableAspectJAutoProxy(exposeProxy = true) 10 | public class AopContextConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/e_aopcontext/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.e_aopcontext.service; 2 | 3 | import org.springframework.aop.framework.AopContext; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Service 7 | public class UserService { 8 | 9 | // @Autowired 10 | // UserService userService; 11 | 12 | public void update(String id, String name) { 13 | // this.get(id); 14 | // userService.get(id); 15 | ((UserService) AopContext.currentProxy()).get(id); 16 | System.out.println("修改指定id的name。。。"); 17 | } 18 | 19 | public void get(String id) { 20 | System.out.println("获取指定id的user。。。"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/f_introduction/component/MoneyValidator.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.f_introduction.component; 2 | 3 | public interface MoneyValidator { 4 | 5 | boolean validate(int money); 6 | } 7 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/f_introduction/component/impl/MoneyValidatorImpl.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.f_introduction.component.impl; 2 | 3 | import com.linkedbear.spring.aop.f_introduction.component.MoneyValidator; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class MoneyValidatorImpl implements MoneyValidator { 8 | 9 | @Override 10 | public boolean validate(int money) { 11 | return money > 0; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/f_introduction/config/IntroductionConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.f_introduction.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @EnableAspectJAutoProxy 9 | @ComponentScan("com.linkedbear.spring.aop.f_introduction") 10 | public class IntroductionConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/f_introduction/service/FinanceService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.f_introduction.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class FinanceService { 7 | 8 | public void transfer(Long source, Long target, int money) { 9 | System.out.println("转账完成!"); 10 | System.out.println(source + " 为 " + target + " 转钱" + money + "元!"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/g_weaving/LoadTimeWeavingApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.g_weaving; 2 | 3 | import com.linkedbear.spring.aop.g_weaving.config.LoadTimeWeavingConfiguration; 4 | import com.linkedbear.spring.aop.g_weaving.service.UserService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class LoadTimeWeavingApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(LoadTimeWeavingConfiguration.class); 11 | UserService userService = ctx.getBean(UserService.class); 12 | userService.get("aaa"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/g_weaving/aspect/LogAspect.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.g_weaving.aspect; 2 | 3 | import org.aspectj.lang.ProceedingJoinPoint; 4 | import org.aspectj.lang.annotation.Around; 5 | import org.aspectj.lang.annotation.Aspect; 6 | import org.aspectj.lang.annotation.Pointcut; 7 | 8 | //@Component 9 | @Aspect 10 | public class LogAspect { 11 | 12 | @Around("pointcut()") 13 | public Object beforePrint(ProceedingJoinPoint joinPoint) throws Throwable { 14 | System.out.println("LogAspect 前置通知 ......"); 15 | return joinPoint.proceed(); 16 | } 17 | 18 | @Pointcut("execution(* com.linkedbear.spring.aop.g_weaving.service.UserService.*(..))") 19 | public void pointcut() { 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/g_weaving/config/LoadTimeWeavingConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.g_weaving.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableLoadTimeWeaving; 6 | 7 | @Configuration 8 | @ComponentScan("com.linkedbear.spring.aop.g_weaving") 9 | //@EnableAspectJAutoProxys 10 | @EnableLoadTimeWeaving 11 | public class LoadTimeWeavingConfiguration { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/g_weaving/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.g_weaving.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class UserService { 7 | 8 | public void get(String id) { 9 | System.out.println("获取id为" + id + "的用户。。。"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/h_imitate/ImitateAopApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.h_imitate; 2 | 3 | import com.linkedbear.spring.aop.h_imitate.service.UserService; 4 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 5 | 6 | public class ImitateAopApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("com.linkedbear.spring.aop.h_imitate"); 10 | UserService userService = ctx.getBean(UserService.class); 11 | userService.get("abc"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/h_imitate/aspect/LogAspect.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.h_imitate.aspect; 2 | 3 | import org.aspectj.lang.annotation.Aspect; 4 | import org.aspectj.lang.annotation.Before; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | @Aspect 9 | public class LogAspect { 10 | 11 | @Before("execution(* com.linkedbear.spring.aop.h_imitate.service.*.*(..))") 12 | public void beforePrint() { 13 | System.out.println("LogAspect beforePrint ......"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/aop/h_imitate/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.aop.h_imitate.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class UserService { 7 | 8 | public void get(String id) { 9 | System.out.println("获取id为" + id + "的用户。。。"); 10 | } 11 | 12 | public void save(String name) { 13 | System.out.println("保存name为" + name + "的用户。。。"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/a_basic/Client.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.a_basic; 2 | 3 | public class Client { 4 | 5 | public static void main(String[] args) throws Exception { 6 | Player player = new Player("郝武辽"); 7 | Partner partner = new Partner("肖洁洁"); 8 | 9 | partner.receiveMoney(200); 10 | partner.playWith(player); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/a_basic/Partner.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.a_basic; 2 | 3 | /** 4 | * 一名陪玩 5 | */ 6 | public class Partner { 7 | 8 | private String name; 9 | 10 | public Partner() { 11 | } 12 | 13 | public Partner(String name) { 14 | this.name = name; 15 | } 16 | 17 | /** 18 | * 收钱 19 | * @param money 20 | */ 21 | public void receiveMoney(int money) { 22 | System.out.println(name + "收到佣金:" + money + "元 ~ "); 23 | } 24 | 25 | /** 26 | * 陪玩 27 | * @param player 28 | */ 29 | public void playWith(Player player) { 30 | System.out.println(name + "与" + player.getName() + "一起愉快地玩耍 ~ "); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/a_basic/Player.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.a_basic; 2 | 3 | /** 4 | * 普通玩家 5 | */ 6 | public class Player { 7 | 8 | private String name; 9 | 10 | public Player(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/b_jdk/Client.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.b_jdk; 2 | 3 | import com.linkedbear.spring.proxy.a_basic.Player; 4 | 5 | public class Client { 6 | 7 | public static void main(String[] args) throws Exception { 8 | Player player = new Player("郝武辽"); 9 | Partner partner = PartnerPlatform.getPartner(50); 10 | 11 | partner.receiveMoney(20); 12 | partner.playWith(player); 13 | 14 | partner.receiveMoney(200); 15 | partner.playWith(player); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/b_jdk/IndividualPartner.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.b_jdk; 2 | 3 | import com.linkedbear.spring.proxy.a_basic.Player; 4 | 5 | /** 6 | * 个人 陪玩 7 | */ 8 | public class IndividualPartner implements Partner { 9 | 10 | private String name; 11 | 12 | public IndividualPartner(String name) { 13 | this.name = name; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | @Override 21 | public void receiveMoney(int money) { 22 | System.out.println(name + "收到佣金:" + money + "元 ~ "); 23 | } 24 | 25 | @Override 26 | public void playWith(Player player) { 27 | System.out.println(name + "与" + player.getName() + "一起愉快地玩耍 ~ "); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/b_jdk/Partner.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.b_jdk; 2 | 3 | import com.linkedbear.spring.proxy.a_basic.Player; 4 | 5 | /** 6 | * 游戏陪玩 7 | */ 8 | public interface Partner { 9 | 10 | /** 11 | * 收钱 12 | * @param money 13 | */ 14 | void receiveMoney(int money); 15 | 16 | /** 17 | * 陪玩 18 | * @param player 19 | */ 20 | void playWith(Player player); 21 | } 22 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/proxy/c_cglib/Client.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.proxy.c_cglib; 2 | 3 | import com.linkedbear.spring.proxy.a_basic.Partner; 4 | import com.linkedbear.spring.proxy.a_basic.Player; 5 | 6 | public class Client { 7 | 8 | public static void main(String[] args) throws Exception { 9 | Player player = new Player("郝武辽"); 10 | Partner partner = PartnerPlatform.getPartner(50); 11 | 12 | partner.receiveMoney(20); 13 | partner.playWith(player); 14 | 15 | partner.receiveMoney(200); 16 | partner.playWith(player); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/transaction/TransactionApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction; 2 | 3 | import com.linkedbear.spring.transaction.config.TransactionAspectConfiguration; 4 | import com.linkedbear.spring.transaction.service.FinanceService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class TransactionApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext( 11 | TransactionAspectConfiguration.class); 12 | FinanceService financeService = ctx.getBean(FinanceService.class); 13 | financeService.transfer(1L, 2L, 100); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/transaction/aspect/Transactional.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.aspect; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | @Documented 10 | @Retention(RetentionPolicy.RUNTIME) 11 | @Target(ElementType.METHOD) 12 | public @interface Transactional { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/transaction/config/TransactionAspectConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.EnableAspectJAutoProxy; 6 | 7 | @Configuration 8 | @EnableAspectJAutoProxy 9 | @ComponentScan("com.linkedbear.spring.transaction") 10 | public class TransactionAspectConfiguration { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/java/com/linkedbear/spring/transaction/service/FinanceService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.service; 2 | 3 | import com.linkedbear.spring.transaction.aspect.Transactional; 4 | import com.linkedbear.spring.transaction.dao.FinanceDao; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | @Service 9 | public class FinanceService { 10 | 11 | @Autowired 12 | FinanceDao financeDao; 13 | 14 | @Transactional 15 | public void transfer(Long source, Long target, int money) { 16 | financeDao.subtractMoney(source, money); 17 | int i = 1 / 0; 18 | financeDao.addMoney(target, money); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-02-aop/src/main/resources/META-INF/aop.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/jdbc/a_quickstart/JdbcTemplateXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.jdbc.a_quickstart; 2 | 3 | import org.springframework.context.support.ClassPathXmlApplicationContext; 4 | import org.springframework.jdbc.core.JdbcTemplate; 5 | 6 | public class JdbcTemplateXmlApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("jdbc/spring-jdbc.xml"); 10 | JdbcTemplate jdbcTemplate = ctx.getBean(JdbcTemplate.class); 11 | jdbcTemplate.execute("insert into tbl_account (user_id, money) values (3, 100)"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/jdbc/c_dao/dao/BaseDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.jdbc.c_dao.dao; 2 | 3 | import org.springframework.jdbc.core.JdbcTemplate; 4 | 5 | import javax.sql.DataSource; 6 | 7 | public abstract class BaseDao { 8 | 9 | // @Autowired 10 | private JdbcTemplate jdbcTemplate; 11 | 12 | public JdbcTemplate getJdbcTemplate() { 13 | return jdbcTemplate; 14 | } 15 | 16 | public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 17 | this.jdbcTemplate = jdbcTemplate; 18 | } 19 | 20 | public void setDataSource(DataSource dataSource) { 21 | if (this.jdbcTemplate == null) { 22 | this.jdbcTemplate = new JdbcTemplate(dataSource); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/jdbc/c_dao/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.jdbc.c_dao.dao; 2 | 3 | import com.linkedbear.spring.jdbc.b_crud.bean.User; 4 | 5 | import java.util.List; 6 | 7 | public interface UserDao { 8 | 9 | void save(User user); 10 | 11 | User findById(Integer id); 12 | 13 | List findAll(); 14 | } 15 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/b_programmatic/ProgrammaticTransactionApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.b_programmatic; 2 | 3 | import com.linkedbear.spring.transaction.b_programmatic.service.UserService; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | public class ProgrammaticTransactionApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("tx/programmatic-transaction.xml"); 10 | UserService userService = ctx.getBean(UserService.class); 11 | userService.saveAndQuery(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/c_declarativexml/DeclarativeTransactionXmlApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.c_declarativexml; 2 | 3 | import com.linkedbear.spring.transaction.c_declarativexml.service.UserService; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | public class DeclarativeTransactionXmlApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("tx/declarative-transaction.xml"); 10 | UserService userService = ctx.getBean(UserService.class); 11 | userService.saveAndQuery(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/c_declarativexml/service/AccountService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.c_declarativexml.service; 2 | 3 | import com.linkedbear.spring.transaction.c_declarativexml.dao.AccountDao; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | 7 | @Service 8 | public class AccountService { 9 | 10 | @Autowired 11 | AccountDao accountDao; 12 | 13 | public void transfer(String sourceId, String targetId, int money) { 14 | accountDao.subtractMoney(sourceId, money); 15 | 16 | int i = 1 / 0; 17 | 18 | accountDao.addMoney(targetId, money); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/e_spread/TransactionSpreadApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.e_spread; 2 | 3 | import com.linkedbear.spring.transaction.e_spread.service.UserService; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | public class TransactionSpreadApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("tx/transaction-spread.xml"); 10 | UserService userService = ctx.getBean(UserService.class); 11 | userService.register(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/e_spread/TransactionSpreadSourceApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.e_spread; 2 | 3 | import com.linkedbear.spring.transaction.e_spread.config.TransactionSpreadConfiguration; 4 | import com.linkedbear.spring.transaction.e_spread.service.UserService; 5 | import org.springframework.context.annotation.AnnotationConfigApplicationContext; 6 | 7 | public class TransactionSpreadSourceApplication { 8 | 9 | public static void main(String[] args) throws Exception { 10 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(TransactionSpreadConfiguration.class); 11 | UserService userService = ctx.getBean(UserService.class); 12 | userService.register(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/e_spread/service/PointService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.e_spread.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | import org.springframework.transaction.annotation.Propagation; 5 | import org.springframework.transaction.annotation.Transactional; 6 | import org.springframework.transaction.support.TransactionSynchronizationManager; 7 | 8 | @Service 9 | public class PointService { 10 | 11 | @Transactional(propagation = Propagation.REQUIRED) 12 | public void addPoint() { 13 | System.out.println(TransactionSynchronizationManager.getCurrentTransactionName()); 14 | System.out.println("addPoint 添加积分 ......"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-03-dao/src/main/java/com/linkedbear/spring/transaction/f_listener/event/UserSaveEvent.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.transaction.f_listener.event; 2 | 3 | import org.springframework.context.ApplicationEvent; 4 | 5 | public class UserSaveEvent extends ApplicationEvent { 6 | 7 | public UserSaveEvent(Object source) { 8 | super(source); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /spring-04-web/src/main/java/com/linkedbear/spring/a_xml/UserService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.a_xml; 2 | 3 | public class UserService { 4 | 5 | public String get() { 6 | return "hahaha"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /spring-04-web/src/main/java/com/linkedbear/spring/b_anno/DemoWebApplicationInitializer.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.b_anno; 2 | 3 | import com.linkedbear.spring.b_anno.config.UserConfiguration; 4 | import org.springframework.web.context.AbstractContextLoaderInitializer; 5 | import org.springframework.web.context.WebApplicationContext; 6 | import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; 7 | 8 | public class DemoWebApplicationInitializer extends AbstractContextLoaderInitializer { 9 | 10 | @Override 11 | protected WebApplicationContext createRootApplicationContext() { 12 | AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); 13 | ctx.register(UserConfiguration.class); 14 | return ctx; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-04-web/src/main/java/com/linkedbear/spring/b_anno/config/UserConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.b_anno.config; 2 | 3 | import com.linkedbear.spring.a_xml.UserService; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class UserConfiguration { 9 | 10 | @Bean 11 | public UserService userService() { 12 | return new UserService(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-04-web/src/main/resources/spring-web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /spring-04-web/src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /spring-04-webmvc-anno-withdao/src/main/java/com/linkedbear/spring/withdao/validation/UserInfoGroup.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.withdao.validation; 2 | 3 | public interface UserInfoGroup { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-04-webmvc-anno-withdao/src/main/java/com/linkedbear/spring/withdao/validation/UserPasswordGroup.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.withdao.validation; 2 | 3 | public interface UserPasswordGroup { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-04-webmvc-anno-withdao/src/main/webapp/WEB-INF/pages/demo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 | 4 | demo 5 | 6 | 7 |

这里是demo页面

8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/java/com/linkedbear/spring/withdao/advice/ConversionBinderAdvice.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.withdao.advice; 2 | 3 | import org.springframework.format.datetime.DateFormatter; 4 | import org.springframework.web.bind.WebDataBinder; 5 | import org.springframework.web.bind.annotation.ControllerAdvice; 6 | import org.springframework.web.bind.annotation.InitBinder; 7 | 8 | //@ControllerAdvice 9 | public class ConversionBinderAdvice { 10 | 11 | @InitBinder 12 | public void addDateBinder(WebDataBinder dataBinder) { 13 | System.out.println("@InitBinder addDateBinder ......"); 14 | dataBinder.addCustomFormatter(new DateFormatter("yyyy年MM月dd日")); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/java/com/linkedbear/spring/withdao/validation/UserInfoGroup.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.withdao.validation; 2 | 3 | public interface UserInfoGroup { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/java/com/linkedbear/spring/withdao/validation/UserPasswordGroup.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.withdao.validation; 2 | 3 | public interface UserPasswordGroup { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/resources/validation-message.properties: -------------------------------------------------------------------------------- 1 | user.username.notblank=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A 2 | user.username.length=\u7528\u6237\u540D\u7684\u957F\u5EA6\u5FC5\u987B\u4E3A6-20\u4F4D 3 | user.name.notblank=\u7528\u6237\u59D3\u540D\u4E0D\u80FD\u4E3A\u7A7A -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/webapp/WEB-INF/pages/demo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 | 4 | demo 5 | 6 | 7 |

这里是demo页面

8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/webapp/WEB-INF/pages/error.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 3 | 4 | 5 | 错误提示 6 | 7 | 8 | 系统出现异常。 9 | 10 | 异常原因:${message} 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/webapp/WEB-INF/pages/session.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 | 4 | session数据测试 5 | 6 | 7 |

session 中的 username :${pageContext.session.getAttribute("username")}

8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/webapp/pages/error.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 3 | 4 | 5 | 错误提示 6 | 7 | 8 | 系统出现异常。 9 | 10 | 异常原因:${message} 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /spring-04-webmvc-xml-withdao/src/main/webapp/pages/session.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 | 4 | session数据测试 5 | 6 | 7 |

session 中的 username :${pageContext.session.getAttribute("username")}

8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/main/java/com/linkedbear/spring/a_quickstart/DemoController.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.a_quickstart; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | @Controller 7 | public class DemoController { 8 | 9 | @RequestMapping("/demo") 10 | public String demo() { 11 | return "demo"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/main/java/com/linkedbear/spring/b_anno/config/RootConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.b_anno.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | 5 | @Configuration 6 | public class RootConfiguration { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/main/java/com/linkedbear/spring/b_anno/controller/DemoController.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.b_anno.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | @Controller 7 | public class DemoController { 8 | 9 | @RequestMapping("/demo") 10 | public String demo() { 11 | return "demo"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/main/resources/spring-ioc.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/main/webapp/WEB-INF/pages/demo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 | 4 | demo 5 | 6 | 7 |

这里是demo页面

8 | 9 | 10 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/test/java/com/linkedbear/spring/config/WebMvcConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.config; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.context.annotation.FilterType; 6 | import org.springframework.stereotype.Controller; 7 | 8 | @Configuration 9 | @ComponentScan(value = "com.linkedbear.spring", 10 | excludeFilters = @ComponentScan.Filter(value = Controller.class, type = FilterType.ANNOTATION)) 11 | public class WebMvcConfiguration { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/test/java/com/linkedbear/spring/controller/DemoController.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.controller; 2 | 3 | import com.linkedbear.spring.service.DemoService; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | @RestController 9 | public class DemoController { 10 | 11 | @Autowired 12 | private DemoService demoService; 13 | 14 | @GetMapping("/ddd") 15 | public String ddd() { 16 | System.out.println(demoService); 17 | return "ddd"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/test/java/com/linkedbear/spring/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public class DemoService { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-04-webmvc/src/test/java/com/linkedbear/spring/servlet/AbstractServlet.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.servlet; 2 | 3 | import org.springframework.web.context.support.WebApplicationContextUtils; 4 | 5 | import javax.servlet.ServletException; 6 | import javax.servlet.http.HttpServlet; 7 | 8 | public class AbstractServlet extends HttpServlet { 9 | 10 | @Override 11 | public void init() throws ServletException { 12 | super.init(); 13 | WebApplicationContextUtils.getWebApplicationContext(getServletContext()).getAutowireCapableBeanFactory() 14 | .autowireBean(this); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/data/jpa/dao/DepartmentDao.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.data.jpa.dao; 2 | 3 | import com.linkedbear.spring.data.jpa.entity.Department; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | public interface DepartmentDao extends JpaRepository { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/mybatis/mapper/DepartmentMapper.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.mybatis.mapper; 2 | 3 | import com.linkedbear.spring.mybatis.entity.Department; 4 | import org.apache.ibatis.annotations.Mapper; 5 | 6 | import java.util.List; 7 | 8 | @Mapper 9 | public interface DepartmentMapper { 10 | 11 | void save(Department department); 12 | 13 | List findAll(); 14 | } 15 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/mybatis/mapper/department.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | insert into tbl_department (id, name, tel) values (#{id}, #{name}, #{tel}) 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/test/SpringTestApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.test; 2 | 3 | import com.linkedbear.spring.test.bean.Cat; 4 | import org.springframework.context.support.ClassPathXmlApplicationContext; 5 | 6 | public class SpringTestApplication { 7 | 8 | public static void main(String[] args) throws Exception { 9 | ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("test/spring-test.xml"); 10 | Cat cat = ctx.getBean(Cat.class); 11 | System.out.println(cat); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/test/bean/Cat.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.test.bean; 2 | 3 | public class Cat { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/java/com/linkedbear/spring/test/config/SpringTestConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.test.config; 2 | 3 | import com.linkedbear.spring.test.bean.Cat; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | @Configuration 8 | public class SpringTestConfiguration { 9 | 10 | @Bean 11 | public Cat cat() { 12 | return new Cat(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/resources/mybatis/SqlMapConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/resources/mybatis/dept.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | insert into tbl_department (id, name, tel) values (#{id}, #{name}, #{tel}) 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /spring-05-integration/src/main/resources/test/spring-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /spring-06-boot/src/main/java/com/linkedbear/spring/boot/BootQuickstartApplication.java: -------------------------------------------------------------------------------- 1 | package com.linkedbear.spring.boot; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class BootQuickstartApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(BootQuickstartApplication.class, args); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /spring-06-boot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=8989 2 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver 3 | spring.datasource.url=jdbc:mysql://localhost:3306/spring-webmvc?characterEncoding=utf8&serverTimezone=Asia/Shanghai 4 | spring.datasource.username=root 5 | spring.datasource.password=123456 --------------------------------------------------------------------------------