一.注解介绍
- 代码里面特殊标记,使用注解可以完成功能
- 注解写法 @注解名称(属性名称=属性值)
- 注解使用在类上面,方面上面和属性上面
二.Spring注解开发准备
1.导入jar包
(1).导入基本的jar包
(2).导入aop的jar包
2.创建类,创建方法
3.创建Spring配置文件,引入约束
(1)上一次做ioc基本功能,引入约束beans
(2)做spring的ioc注解开发,引入新的约束
<?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"> <!-- bean definitions here -->
</beans>
4.开启注解扫描
<!-- 开启注解扫描
(1)到包里面扫描类,方法,属性上面是否有注解
-->
<context:component-scan base-package="cn.itcast"></context:component-scan>
<!--
扫描属性上面的注解
-->
<!-- <context:annotation-config></context:annotation-config> -->
- 注解创建对象
- 在创建对象的类上面使用注解实现
@Component(value=book") //相同于<bean id="user" class=""/>
public class Book {
public void add() {
System.out.println("Book add");
}
}
public class SpringDemo {
@Test
public void fun1() {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Book book=(Book)context.getBean("book");
book.add();
}
}
- 创建对象有四个注解
- @Component
- @Controller
- @Service
@Repository
目前这四个注解功能是一样的,都创建对象
5.创建对象单实例还是多实例
@Service(value="user") //<bean id="user" class=""/>
@Scope(value="prototype") //多实例
public class User {
public void add() {
System.out.println("add...");
}
}
6.注解注入属性
(1).创建service类,创建dao类,在service得到dao对象,注入属性第一个注解@Autowired
A.创建dao和service对象
@Component(value="userDao")
public class UserDao {
public void add() {
System.out.println("UserDao add");
}
}
B.在service类里面定义dao类型属性
@Component(value="userService")
public class UserService {
//得到dao对象
//1.定义dao类型属性
//在dao属性上面使用注解 完成对象注入
@Autowired
private UserDao userDao;
//使用注解方式时候不需要set方法
public void add() {
System.out.println("UserService add");
userDao.add();
}
}
(2).注入属性第二个注解 @Resource
@Component(value="userService")
public class UserService {
//name属性值写 注解创建dao对象value的值
@Resource(name="userDao")
private UserDao userDao;
public void add() {
System.out.println("UserService add");
userDao.add();
}
}
三.配置文件和注解混合使用
1.创建对象操作使用配置文件方式实现
<?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"> <!-- bean definitions here -->
<!-- 开启注解扫描
(1)到包里面扫描类,方法,属性上面是否有注解
-->
<context:component-scan base-package="cn.st"></context:component-scan>
<!-- 配置对象 -->
<bean id="bookService" class="cn.st.web.BookService"></bean>
<bean id="bookDao" class="cn.st.web.BookDao"></bean>
<bean id="ordersDao" class="cn.st.web.OrdersDao"></bean>
</beans>
2.注入属性的操作使用注解方式实现
@Component(value="bookService")
public class BookService {
@Resource(name="bookDao")
private BookDao bookDao;
@Resource(name="ordersDao")
private OrdersDao ordersDao;
public void add() {
System.out.println("BookService add");
bookDao.add();
ordersDao.add();
}
}