Spring裝配、註解裝配

目錄

列:裝配的兩種方式

創建po對象Student1.java、Student2.java、Students.java

測試

註解裝配

創建po層User.java

創建dao層UserDao.java、UserDaoImp.java

創建service層UserService.java、UserServiceImp.java

創建Controller層UserController.java

bean.xml

測試


列:裝配的兩種方式

創建po對象Student1.java、Student2.java、Students.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"	
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="student1" class="com.lws.test.Student1"></bean>
	<bean id="student2" class="com.lws.test.Student2"></bean>

	<!-- 1裝配:根據名稱裝配   byName:對象的屬性名與實例化的Bean的名稱要一致  (默認是按名稱裝配) -->	
	<bean id="students" class="com.lws.test.Students" autowire="byName"></bean>

	<!-- 1.2 spring裝配 按類型裝配    byType:對象的屬性名的類型與實例化的Bean的Class類型要一致  (默認是按名稱裝配)  -->
    <!-- <bean id="beans" class="com.iotek.spring.test6.Beans" autowire="byType"></bean> -->
    
</beans>

測試

public class Test {
	private ClassPathXmlApplicationContext context;
	@Before
	public void init() {
		context=new ClassPathXmlApplicationContext("beans.xml");
	}
	@org.junit.Test
	public void students() {
		Students students=(Students)context.getBean("students");
		System.out.println(students);
	}
}

註解裝配

創建po層User.java

創建dao層UserDao.java、UserDaoImp.java

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

//@Component(value="userDaoImp")//註解的標記
@Repository(value="userDaoImp")//用於對dao層進行標註
public class UserDaoImp implements UserDao{

	@Override
	public void save() {
		// TODO Auto-generated method stub
		System.out.println("userdaoImp層實現類");
	}
}

創建service層UserService.java、UserServiceImp.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ResponseBody;

//@Component(value="userServiceImp")
@Service(value="userServiceImp")//service層註解
public class UserServiceImp implements UserService {
	private UserDao userDao;
	
	@Autowired// 自動裝配默認使用類型注入.
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	public void register() {
		// TODO Auto-generated method stub
		userDao.save();
		System.out.println("userService層實現類--register");
	}
}

創建Controller層UserController.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;

@Controller(value="userController")
public class UserController {
	@Autowired
	@Qualifier("userServiceImp")//按名稱進行注入.@Service(value="userServiceImp")、可以不寫
	private UserService userService;

	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	public void a() {
		System.out.println("UserController");
		userService.register();
	}
}

bean.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"
	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">

	<!--2註解裝配 命名空間  xmlns:context="http://www.springframework.org/schema/context"
	     約束http://www.springframework.org/schema/context 
		  http://www.springframework.org/schema/context/spring-context.xsd" -->
		<!-- 掃描包下的所有的類 -->
		<context:component-scan base-package="com.lws2"></context:component-scan>
</beans>

測試

	private ClassPathXmlApplicationContext context;
	@Before
	public void init() {
		context=new ClassPathXmlApplicationContext("beans2.xml");
	}
	//測試userDaoImp類是否實例化
	@org.junit.Test
	public void test1() {
		 UserDao userDao=(UserDao) context.getBean("userDaoImp");
	        userDao.save();
	}
	//測試userServiceImp類是否實例化
	@org.junit.Test
	public void test2() {
		 UserService aa=(UserService) context.getBean("userServiceImp");
	        aa.register();
	}
	//測試UserController類是否實例化
	@org.junit.Test
	public void test3() {
		 UserController aa=(UserController) context.getBean("userController");
	        aa.a();
	}

結果:

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章