Spring的bean管理(註解) 學習記錄

  1. 代碼裏面特殊標記,使用註解可以完成功能
  2. 註解寫法 @註解名稱(屬性名稱=屬性值)
  3. 註解使用在類上面,方法上面和屬性上面

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........");
		}
	}

註解注入屬性

  1. 創建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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章