package com.astute.sparrow.spring.ioc.method_injection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@Component("a")
public class A {
@Autowired
@Qualifier("b")
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
package com.astute.sparrow.spring.ioc.method_injection;
import org.springframework.stereotype.Component;
@Component("b")
@Scope("prototype")
public class B {
}
package com.astute.sparrow.spring.ioc.method_injection;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestBeanFactoryViaClasspathScan {
public static void main(String[] args) {
ApplicationContext factory = new ClassPathXmlApplicationContext("com/astute/sparrow/spring/ioc/method_injection/spring-classpath-scan.xml");
A a = (A) factory.getBean("a");
System.out.println(a.getB());
System.out.println(a.getB());
System.out.println(a.getB());
System.out.println(a.getB());
System.out.println("========================");
System.out.println(factory.getBean("b"));
System.out.println(factory.getBean("b"));
System.out.println(factory.getBean("b"));
System.out.println(factory.getBean("b")); }
}
输出:
写道
com.astute.sparrow.spring.ioc.method_injection.B@1394894
com.astute.sparrow.spring.ioc.method_injection.B@1394894
com.astute.sparrow.spring.ioc.method_injection.B@1394894
com.astute.sparrow.spring.ioc.method_injection.B@1394894
========================
com.astute.sparrow.spring.ioc.method_injection.B@1b8f864
com.astute.sparrow.spring.ioc.method_injection.B@bb7759
com.astute.sparrow.spring.ioc.method_injection.B@1989f84
com.astute.sparrow.spring.ioc.method_injection.B@110c424
分享到:
相关推荐
在 Spring 2.5 中,引入了组件自动扫描机制,该机制可以在类路径下寻找标注了 @Component、@Service、@Controller、@Repository 注解的类,并将这些类纳入 Spring 容器中管理。 @Component、@Repository、@Service...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...
4. 为了启用自动扫描和注册Bean定义,需要在Spring配置文件中使用`<context:component-scan>`标签,并通过`base-package`属性来指定需要扫描的类路径位置。 5. 在配置文件中还可以通过`<aop:aspectj-autoproxy/>`...
这个过程涉及到Spring IoC(Inversion of Control)容器的初始化,包括类路径扫描、Bean定义的创建以及实例化。接下来,我们将深入探讨`@ComponentScan`的工作原理及其背后的源码分析。 首先,`@ComponentScan`注解...
这些注解简化了Bean的声明,使得Spring可以通过扫描包路径自动发现和注册Bean。 对于依赖注入,Spring提供了`@Autowired`注解,它可以根据类型或者通过`@Qualifier`指定名称来自动装配Bean。此外,`@Value`注解可以...
你可以指定包路径,Spring会扫描该路径及其子路径下的所有类,将带有@Component及其派生注解的类注册为bean。 3. **@Scope** `@Scope`注解用于定义bean的作用域。Spring支持单例(singleton)、原型(prototype)...
在Spring 2.5版本中,这个功能极大地简化了配置,使得开发者无需显式地声明每个bean,只需在类路径(ClassPath)上设置一些元数据,Spring就能自动发现并管理这些bean。 自动扫描classpath是指Spring框架会搜索指定...
在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...
当我们在项目中引入特定的库时,Spring Boot会根据类路径下存在的jar包和配置文件尝试进行自动配置。例如,如果检测到`spring-web`模块,Spring Boot会自动配置Web环境,包括DispatcherServlet和...
2. **扫描类路径**:遍历类路径,寻找带有`@MyComponent`注解的类,并将它们存入一个Map中,key为bean的名称,value为对应的Class对象。 3. **创建bean实例**:使用反射的`Class.newInstance()`方法或构造函数创建...
例如,`@ConditionalOnClass`检查类路径中是否存在某个类,如果存在则创建Bean。 10. ** Profiles `@Profile`注解可以用来定义Bean在特定环境下(如dev、test、prod)才生效。例如,`@Profile("dev")`表明该Bean只...
- 使用`ClassPathXmlApplicationContext`,从类路径加载配置文件。例如: ```java ApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml"); ``` - **通过代码注解**:Spring也...
1. 加载XML文件:通过`Resource`接口加载指定的XML配置文件,`ClassPathResource`是常用的实现类,可以从类路径中加载资源。 2. 解析XML:使用`DocumentBuilder`解析XML文档,获取DOM树。 3. 遍历DOM树:`...
通过指定包扫描路径,Spring可以自动发现并管理所有标记为组件的类。在XML配置中,我们使用`<context:component-scan>`标签来实现: ```xml ``` 这将扫描`com.example`及其子包下的所有@Component注解的类。而在...
Spring容器在扫描bean定义时,会基于指定的包路径进行查找。因此,我们需要将这些类放入正确的包中,例如`com.spring`。 在创建了正确的包结构后,我们需要配置Spring的bean扫描。如果使用的是XML配置,我们会在...
Spring会通过类路径扫描找到这些标记的类。 - Java配置:通过实现`Configuration`接口或使用`@Configuration`注解的类来定义Bean。例如: ```java @Configuration public class AppConfig { @Bean public ...
Spring3提供了一种无需XML配置即可完成Bean定义的方法,即通过扫描类路径中的特定注解来自动注册Bean。这种方式极大地简化了Bean的管理过程,使得开发人员能够更专注于业务逻辑的编写而非繁琐的配置工作。 #### ...
通过base-package属性指定需要扫描的包路径,Spring将会扫描该包及其子包下带有@Component、@Controller、@Service或@Repository注解的类,并自动注册为Bean。 #### 8. 多包扫描配置 在"context:component-scan...
本文将深入探讨Spring 3.0中依赖注入的新特性,特别是如何使用`@Repository`、`@Service`、`@Controller`和`@Component`注解来标记类为Bean,以及如何利用`<context:component-scan/>`元素自动扫描和注册这些Bean。...
Spring还支持基于注解的配置,通过扫描包路径查找带有特定注解的类,自动创建bean定义。 在实际开发中,结合单元测试,依赖注入使得我们可以轻松地替换依赖,便于测试不同场景下的行为。通过合理地使用Spring的依赖...