spring-aop
的 jar 包。xmlns:context="http://www.springframework.org/schema/context"
Spring2. 5 引入使用注解去定义 Bean。
@Component
描述 Spring 框架中 Bean除了 @Component
外,Spring 提供了 3 个功能基本和 @Component 等效的注解
@Repository
用于对 DAO 实现类进行标注@Service
用于对 Service 实现类进行标注@Contoller
用于对 Controller 实现类进行标注这三个注解是为了让标注类本身的用途清晰,Spring 在后继版本会对其增强。
举个例子:
@Repository("userDao")
public class UserDao {
public void save() {
System.out.println("Dao 中保存用户。。。");
}
}
@Autowired
进行自动注入@Autowired
默认按照类型进行注入。如果存在两个相同的 Bean 类型相同,则按照名称注入@Autowired
注入时可以针对成员变量或者 set 方法。如果属性提供 setter 方法,注解要加在 setter 方法上;如果属性没有提供 setter 方法,注解直接加在属性上就可以。@Autowired
的 required 属性,设置一定要找到匹配的 Bean@Qualifier
指定注入 Bean 的名称@Qualifier
指定注入 Bean 的名称@Qualifier
指定 Bean 名称后,注解 Bean 必须指定相同名称// 必须同时使用
@Autowired
@Qualifier //按照名称来注入
举个例子:
@Component("userService")
public class UserService {
// 直接使用注解,不用另外写setter和getter方法
@Value("米饭")
private String something;
//自动注入UserDao类
@Autowired
//使用名称注入
@Qualifier("userDao")
private UserDao userDao;
public void eat() {
System.out.println("eat:" + something);
}
public void save() {
System.out.println("Service 中保存用户。。。");
userDao.save();
}
}
@Resource
进行属性注入@Resource
标准注解的支持@Resource
和 @Autowired
注解功能相似简单来说:
@Resource = @Autowired + @Qualifier
举个例子:
@Component("userService")
public class UserService {
@Resource(name = "userDao")
private UserDao userDao;
public void save() {
System.out.println("Service 中保存用户。。。");
userDao.save();
}
}
@Value
@Autowired
@Qualifier("Beanname")
或
@Resource(name = "Beanname")
Spring 初始化 bean 或销毁 bean 时,有时需要作一些处理工作,因此 spring 可以在创建和拆卸 bean 的时候调用 bean 的两个生命周期方法。
xml 的配置如下:
<bean id="foo" class="...Foo" init-method="setup" destory=method="teardown" />
转换为注解方式:
@PostConstruct
初始化PreDestory
销毁举个例子:
@Component("bean1")
public class Bean1 {
@PostConstruct
public void init() {
System.out.println("initBean...");
}
public void say() {
System.out.println("say...");
}
@PreDestroy
public void destroy() {
System.out.println("destroyBean...");
}
}
<bean>
配置的一样,默认作用范围都是 singleton@Scope
注解用于指定 Bean 的作用范围举个例子:
@Component("bean2")
@Scope("prototype")
public class Bean2 {
//....
}
结构清晰,易于阅读
开发便捷,属性注入方便
xmlns:context="http://www.springframework.org/schema/context"
context:annotation-config
标签<context:annotation-config />
PS:
<context:annotation-config/>
是单独使用属性注解。<context:component-scan base-package="xxx"
是开启注解扫描:可以使用类注解和属性注解。