配置文件的实现方式在bean对象比较多的情况下,配置文件会越来越复杂,这时我们可以通过扫描加注解的方式来简化我们的操作。
基于注解的方式需要用到AOP的支持,所以我们需要添加AOP的依赖

通过context标签的component-scan属性指定我们的扫描路径 @Component注解 @Resource和@Autowired 注入的注解 设置特殊的扫描条件 UserBean类 测试启动类
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
"
>
<!-- 扫描指定包下的 带有Component标签的类,纳入spring管理 -->
<context:component-scan base-package="com.zyz.spring"></context:component-scan>
</beans>
在需要注册到容器的类上添加@Component标签,标识这个类由Spring容器接管import org.springframework.stereotype.Component;
@Component
public class Pet {
}
在注解的场景下依赖注入我们可以通过 @Resource和@Autowired实现,他们的区别是@Resource默认是根据name属性来查找的,而@Autowired注解默认是根据类型查找的,@Autowired需要和@Qualifier配合实现基于name的查找。
@Autowired+@Qualifier=@Resource在实现上 @Resource(name="daoMysql")
//@Autowired
//@Qualifier("daoMysql")
UserDao dao;
常用的注解以及使用范围
context:component-scan base-package

基于注解实现Java配置类
@Configuration相当于applicationContext.xml,可以实现IOCpackage com.zyz.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/*** Java配置类 * 被@Configuration注解标注的Java类就是一个配置类 * 作用和 applicationContext.xml 是一样的 */
@Configuration
public class JavaConfig {
/*** 被@Bean注解修饰的方法 等价于 * package com.zyz.spring;
public class UserBean {
private String name;
private int age;
public UserBean(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "UserBean [name=" + name + ", age=" + age + "]";
}
}
package com.zyz.spring;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class AppStart {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 基于Java配置类的 IoC初始化
ApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class);
// 获取实例
UserBean user = ac.getBean("abc", UserBean.class);
System.out.println(user.toString());
}
}