基于XML三层架构开发小实验
0.🍖生成对象方法
a.使用静态工程类
b.实例工厂类
c.空构造方法(IOC)+所有属性的set方法(DI)或者通过带所以参数的构造方法
说明:IOC与DI的核心功能
IOC:配置Bean将Java类配置到Spring容器当中。
因为我们使用的是空构造方法,生成的属性全是空的。
所以需要
DI:选择将容器中适配的对象装配到🍖对象的属性中
1.🍖基于XML
使用到:Java类+配置文件
生成对象方法:可以用个第0点的所有方法,与第二基于注解不同的地方在于配置文件。
如何实现:
使用到:Java类(【属性、方法、类上面添加注解】)+配置文件【相对于基于XML,这里的更为简洁】
生成对象方法:可以用个第0点的所有方法,与第一基于XML不同的地方在于配置文件,多了注解。
6大常用注解与解释
IOC(控制反转):将类配置到Container中
@Component 如果不清楚该组件是哪一层,直接使用@Component,比较简单。
可以替代@Repository@service@controller
@Repository@service@controller
默认对象的名(id)类名的首字母小写
@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{
@Override
public 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();
}
@Override
public String toString() {
return "UserServiceImp [userDao=" + userDao + "]";
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User login(String username, String password) {
// TODO Auto-generated method stub
return 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/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 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 stub
String file = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(file);
UserAction action = ac.getBean("userAction",UserAction.class);
action.checkUser("admin", "123");
}
}
实验结果如下:
一份实验报告