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,使用注解为属性赋值。
这里就不贴代码了,原理都一样。
网友评论