1. 准备工作
(1) 导入 jar 包
除了上篇文章使用到的基本 jar 包外, 还得加入 aop 的 jar 包, 所有 jar 包如下
所需 jar 包
(2) 配置 xml
- <?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: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">
- <!-- 开启注解扫描, 到包里面扫描类, 属性, 方法上是否有注解 -->
- <context:component-scan base-package="com.codeliu"/>
- </beans>
2. 注解实例化 Bean
(1) 实例化 Bean 有四个注解
@Component
@Service: 业务层
@Controller:web 层
@Repository: 持久层
虽然分了层, 但目前这四个注解的功能是一样的.
- @Service(value = "user") // 相当于 bean 标签中的 id, 四种方式功能一样
- // @Component(value = "user")
- // @Controller(value = "user")
- // @Repository(value = "user")
- @Scope(value = "singleton")
- public class User {
- public void print() {
- System.out.println("user......");
- }
- }
- @Test
- /**
- * 使用注解实例化 User 类
- */
- public void testUser() {
- // 读取配置文件
- @SuppressWarnings("resource")
- ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
- User user = (User)context.getBean("user");
- user.print();
- }
3. 注解为属性赋值
首先来个 UserDao
- @Component(value = "userDao")
- public class UserDao {
- public void print() {
- System.out.println("userdao......");
- }
- }
再来个 service
- @Service(value = "userService")
- public class UserService {
- // 注入对象类型的属性, 不用提供 set 方法
- // 1. 使用自动装配
- // @Autowired // 为 byType 类型, 如果有多个相同类型的, 得配合 @Qualifier 注解
- // private UserDao userDao;
- // 2. 不使用自动装配
- @Resource(name = "userDao")
- private UserDao userDao;
- // 注入普通类型的属性
- @Value(value = "CodeTiger")
- private String name;
- public void print() {
- System.out.println("UserService......");
- userDao.print();
- System.out.println(name);
- }
- }
为属性赋值, 我们可以使用自动装配, 也可以手动赋值.
- @Test
- /**
- * 使用注解注入属性
- */
- public void testUserService() {
- @SuppressWarnings("resource")
- ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
- UserService service = (UserService)context.getBean("userService");
- service.print();
- }
4. 注解和 xml 结合使用
当然我们也可以同时使用注解和 xml, 一般我们在 xml 中实例化 Bean, 使用注解为属性赋值.
这里就不贴代码了, 原理都一样.
来源: http://www.jianshu.com/p/80df0a6daf65