学习目标:
基于XML三层架构开发小实验
学习时间:
学习SSM框架第四天周三下午
开始实验前需要理解的几个知识点:
0.🍖生成对象方法
a.使用静态工程类
b.实例工厂类
c.空构造方法(IOC)+所有属性的set方法(DI)或者通过带所以参数的构造方法
说明:IOC与DI的核心功能
IOC:配置Bean将Java类配置到Spring容器当中。
因为我们使用的是空构造方法,生成的属性全是空的。
所以需要
DI:选择将容器中适配的对象装配到🍖对象的属性中
1.🍖基于XML
使用到:Java类+配置文件
生成对象方法:可以用个第0点的所有方法,与第二基于注解不同的地方在于配置文件。
如何实现:
2.🍖基于注解(自动装配) 梦幻联动😉:一般使用注解,基本就要用到自动装配
使用到:Java类(【属性、方法、类上面添加注解】)+配置文件【相对于基于XML,这里的更为简洁】
生成对象方法:可以用个第0点的所有方法,与第一基于XML不同的地方在于配置文件,多了注解。
6大常用注解与解释
IOC(控制反转):将类配置到Container中
@Component 如果不清楚该组件是哪一层,直接使用@Component,比较简单。
可以替代@Repository@service@controller
@Repository@service@controller
默认对象的名(id)类名的首字母小写
DI(依赖注入):在容器中挑选最合适的对象,注入到IOC生成的对象当中。
@Resource (name=容器
@AutoWired 按照类型来注入(假如容器中有多个同类的对象,需要和@Qualified来联动,用来直接按名称来确定注入哪一个对象)
3.🍖
实验内容:
提示:这里可以添加要学的内容
1、 新建项目,导入相对于的jar包,创建包
2、 代码实操:
a.创建用户类
package cn.domain;public class User {}
b.创建接口
package cn.dao;import cn.domain.User;public interface UserDao {User login();}
c.重写接口里的方法
package cn.dao.imp;import cn.dao.UserDao;
import cn.domain.User;public class UserDaoImp implements UserDao{@Overridepublic User login() {System.out.print("获取dataSource-连接数据库,访问数据....");return new User();}}
d.生成空构造方法和set方法
package cn.service.imp;import cn.dao.UserDao;
import cn.domain.User;
import cn.service.UserService;public class UserServiceImp implements UserService {private UserDao userDao;public UserServiceImp() {super();}@Overridepublic String toString() {return "UserServiceImp [userDao=" + userDao + "]";}public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic User login(String username, String password) {// TODO Auto-generated method stubreturn userDao.login();}}
3、 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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- <bean id="scope" class="com.itheima.scope.Scope" scope="singleton"/> --><bean id = "userDao" class = "cn.dao.imp.UserDaoImp"></bean><bean id = "userService" class = "cn.service.imp.UserServiceImp"><property name = "userDao" ref="userDao"></property></bean><bean id = "userAction" class = "cn.web.UserAction"><property name = "userService" ref="userService"></property></bean><!--
基于XML三层架构
接口 类 构造方法+set 方法
配置文件bean 注入对应的对象--></beans>
4、 新建测试类测试
package cn;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.web.UserAction;public class Test3Layer {public static void main(String[] args) {// TODO Auto-generated method stubString file = "applicationContext.xml";ApplicationContext ac = new ClassPathXmlApplicationContext(file);UserAction action = ac.getBean("userAction",UserAction.class);action.checkUser("admin", "123");}}
实验结果如下:
学习产出:
一份实验报告