一、基于XML实现
首先需要在XML中加入如下代码
<!-- 允许使用注解完成bean的自动装配-->
<context:annotation-config></context:annotation-config>
<bean id="myCar" class="com.project.CarBean">
<property name="name" value="迈凯伦"></property>
</bean>
1、@Autowired
作用:装配Bean。
用法:①配置在属性上 ②配置在set方法上 ③配置在构造方法上
注:@Autowired注解是按类型装配依赖对象,如果有多个类型则按名称匹配。默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。
2、@Qualifier
作用:配合@Autowired使用。把按类型配置变为按名称匹配。
配置:①配置在属性上 ②配置在set方法上
@Autowired
//自动装配bean对象 -- 按照类型装配
@Qualifier
//Autowired使用,将Autowired装配方式改为由名称匹配
private CarBean carBean;
3、@Resource
作用:装配Bean。
用法:①配置在属性上 ②配置在set方法上
• @Resource是JSR-250规范定义的规范。
• @Resource注解默认按名称装配。名称可以通过name属性指定,如果没有指定name属性,默认取属性的名称作为bean名称寻找依赖对象。
注:如果没有指定name属性,并且按照默认的名称找不到依赖对象时, @Resource会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
@Resource(name = "myCar")
private CarBean carBean;
4、@PostConstruct与@PreDestroy
作用:指定初始化方法与销毁方法。
用法:配置在自定义的初始化方法和销毁方法上。
@PostConstruct
//bean对象初始化时调用的方法
//无参公共方法
public void init() {
System.out.println("学生初始化");
}
@PreDestroy
//bean对象被销毁之前调用的方法
//无参公共方法
public void destroy() {
System.out.println("学生销毁");
}
• @PostConstruct与@PreDestroy是JSR-250规范定义的规范。
• 初始化方法在容器产生Bean对象的时候被调用。
• 销毁方法在容器主动调用销毁的时候被调用。
• 容器只管理单例Bean的销毁。
• 两个方法必须是无参的公共方法。
二、基于类实现配置
创建一个配置类Config
1、@Configuration
作用:标识当前类为Spring配置类,以此代替xml文件,从而实现零配置。
设置了@Configuration注解的类称为中心服务类,负责注入所需的Bean对象。
@Configuration
public class Config {
}
2、@ComponentScan
作用:指定扫描的包,在中心服务类前加注解。
//basePackages指定从哪个包开始扫描
@ComponentScan(basePackages = "com.project")
//basePackageClasses 指定从哪个类所在的包开始扫描
//@ComponentScan(basePackageClasses = ApplicationConfig.class)
public class ApplicationConfig {
}
3、@Component
作用:标识需要装配的类,在需要装配的类前加注解。
容器被创建时,此类会自动创建一个对象,并由容器进行管理
@Component
public class StudentBean {
}
4、@Autowired
@Autowired
IUserDao userDao;
5、实现
//加载配置类 完成容器的创建
ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
IUserService service = context.getBean(UserServiceImpl.class);