- 代碼裏面特殊標記,使用註解可以完成功能
- 註解寫法 @註解名稱(屬性名稱=屬性值)
- 註解使用在類上面,方法上面和屬性上面
Spring註解開發準備
1.導入jar包
(1)導入基本的jar包
(2)導入aop的jar包
2.創建類,創建方法
3.創建spring配置文件,引入約束
(1)實現ioc基本功能,引入約束beans
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
(2)進行ioc註解開發,引入新的約束
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"
最終的配置文件:
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
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">
</beans>
4.開啓註解掃描
<!-- 開啓註解掃描
(1)到包裏面掃描類、方法、屬性上面是否有註解
-->
<context:component-scan base-package="cn.itcast"></context:component-scan>
<!--
掃描屬性上面的註解
-->
<context:annotation-config></context:annotation-config>
文件結構:
以下這段代碼將會掃描cn.itcast下的所有文件的是否存在註解,即包括 cn.itcast.anno 和 cn.itcast.xmlanno 兩個包在內的所有文件。
<context:component-scan base-package="cn.itcast"></context:component-scan>
註解創建對象
1.在創建對象的類上面使用註解實現
(1)註解代碼
@Component(value="user") //<bean id="user" class=""/>
public class User {
public void add() {
System.out.println("add........");
}
}
(2)測試代碼
package cn.itcast.anno;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestAnno {
@Test
public void testUser() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
User user = (User) context.getBean("user");
System.out.println(user);
user.add();
}
}
(3)測試結果
2.創建對象有四個註解
Spring中提供@Component的三個衍生註解:(功能目前來講是一致的,都是創建對象)
*@Controller :WEB層
*@Service :業務層
*@Repository :持久層
這三個註解是爲了讓標註類本身的用途清晰,Spring在後續版本會對其增強
3.創建對象是單實例還是多實例
Tips:下列代碼中的@Scope(value="prototype")
表示爲單實例對象
@Component(value="user") //<bean id="user" class=""/>
@Scope(value="prototype")
public class User {
public void add() {
System.out.println("add........");
}
}
註解注入屬性
- 創建service類,創建dao類,在service得到dao對象
注入屬性第一個註解@Autowired
(1)創建dao和service對象
@Component(value="userDao")
public class UserDao {
@Service(value="userService")
public class UserService {
(2)在service類裏面定義dao類型屬性
Tips:其中@Autowired
表示注入UserDao對象
@Service(value="userService")
public class UserService {
//得到dao對象
//1.定義dao類型屬性
//在dao塑像上面使用註解 完成對象注入
@Autowired
private UserDao userDao;
//使用註解方式時候不需要set方法
}
注入屬性第二個註解@Resource
Tips:下面這段代碼用來替換上一段代碼中的@Autowired
代碼片段,其中name對應@Component
中設置的值。
//name屬性值寫註解創建dao對象value值
@Resource(name="userDao")
private UserDao userDao;