spring总结之二(Bean作用域、依赖注入)
2021-07-15 16:08
标签:实例 延迟 servlet 之间 完成 cto 文件中 mvc 输出 1.单例模式:表示在任何地方使用对象,总是一个(对象是唯一的)。 (笔面试重点) 开发步骤 1.创建maven工程 2.编写King类 3.在配置文件中配置Bean 1.立即加载:在spring容器读取配置文件时候,对象就被创建,这个时候创建的对象就是立即加载。 2.延迟加载: 不是读取配置文件时创建对象,而是使用对象时创建对象。 好处:可以节省内存 3.配置延迟加载 spring中赋值的两种方式:1.set方法 2.构造方法 思路:页面-控制器-业务层-持久层 5.配置文件 测试: 1.定义带参的构造方法 思路:页面-控制器-业务层-持久层 它们之间关系如何?百度,分析day08代码总结。 spring总结之二(Bean作用域、依赖注入) 标签:实例 延迟 servlet 之间 完成 cto 文件中 mvc 输出 原文地址:https://www.cnblogs.com/shijinglu2018/p/9535883.html### Bean的作用域:单例(singleton),多例(prototype)
饿汉式
public class King{
private final static King king = new King();
private King(){
}
public static King getKing(){
return king;
}
}
懒汉式
public class King{
private static King king ;
private King(){
}
public static King getKing(){
if(king==null){
king = new King();
return king;
}else{
return king;
}
}
}
public class King{
}
--------------------------------------------------------------------------------1)添加web.xml
2) 添加Tomcat运行环境
3)添加依赖jar包 spring-webmvc junit
4)添加配置文件
public class King {
}
###Bean的延迟加载
--------------------------------------------------------------------------------
### IOC(重要):控制反转(Inversion Of Control),原来创建对象和管理对象由程序代码完成,使用spring之后,创建对象和管理对象的权利交给spring容器(交给配置文件),控制权的转移叫控制反转。
--------------------------------------------------------------------------------###给成员变量赋值(依赖注入DI)
1.使用set方法赋值(推荐使用)
1.在cn.tedu.dao包新建接口UserDao
public interface UserDao{
void insertUser();
void updateUser();
void deleteUser();
void seletById();
void seleteAll();
}
2.新建接口的实现类:把接口中的方法实现,在方法中做控制台输出
public class UserDaoImpl implements UserDao{
public void insertUser(){
System.out.println("添加成功");
}
......
}
3.在cn.tedu.service包中定义业务层的接口UserService
public interface UserService{
void addUser();
}
4.新建接口的实现类UserServiceImpl
public class UserServiceImpl implements UserService{
private UserDao userDao;
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
public void addUser(){
userDao.insertUser();
}
}
bean id="userDao" class="cn.tedu.dao.UserDaoImpl"/>
bean id="userService" class="cn.tedu.service.UserServiceImpl">
//1.property表示给成员变量(属性)赋值
//2.调用set方法
//3.name表示属性名
//4.ref表示bean的id名
property name="userDao" ref="userDao"/>
bean>
getBean("userService",XXX);
cn.tedu.servlet
public class UserServlet{
pivate UserServie userService;
//setXX...
public void doGet(){
userService.addUser();
}
}
实例化UserServlet,使用set方法给userService依赖注入
测试:获取UserServlet对象,调用doGet方法
2.构造方法赋值
public UserServletImpl(){}
public UserServletImpl(UserDao userDao){
this.userDao = userDao;
}
3.自动装配(了解)
(省略)
----------------------------------------------------------------------
未完待补
上一篇:C++采药题解