当前位置: 首页 > news >正文

spring基础使用(案例)

基于xml使用:

准备:

1.Dao层(接口):

public interface UserDao {public void save();
}

1.1 Dao层(实现类):

public class UserDaoIim  implements UserDao {@Overridepublic void save() {System.out.println("save");}
}

2.Service层(接口):

public interface UserService {public void save();
}

2.1 Service层(实现类):

public class UserServiceImp implements UserService {private UserDao userDao;@Overridepublic void save() {userDao.save();//调用dao层方法System.out.println("Service_save");}public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}
}

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 https://www.springframework.org/schema/context/spring-context.xsd"><bean id="UserDao" class="UserDaoIim的全限定名"></bean><bean id="UserService" class="UserServiceImp的全限定名"><property name="userDao" ref="UserDao"></property>
<!--  name="userDao":UserServiceImp的属性   ref="UserDao":中指上面beanid指--></bean>
</beans>

测试使用:

public class MyTest {private UserDao userDao;private UserService userService;@Testpublic void springs(){
//        UserDao userDao = new UserDaoIim();
//        userDao.save();ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");//文件路径,我放在resources根下。
//        userDao = (UserDao) applicationContext.getBean("UserDao");//id名
//        userDao.save();userService = (UserService) applicationContext.getBean("UserService");//id名userService.save();}
}

三种方式获取bean对象:

        静态工厂模式获取:

静态工厂类(该类用到的实现类同上):

public class StaticFactory {public static UserDao getUserDao() {System.out.println("StaticFactory UserDao");return new UserDaoIim();}
}

xml关键配置:

<!-- 静态工厂获取bean。-->
<bean id="UserDao" class="com.dt.factory.StaticFactory" factory-method="getUserDao"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}

实例工厂模式获取:

        实例工厂类(该类用到的实现类同上):

public class InstanceFactory {public UserDao getUserDao() {System.out.println("Instance UserDao");return new UserDaoIim();}
}

xml关键配置:

<!--        实例工厂获取实例-->
<bean id="instanceFactory" class="com.dt.factory.InstanceFactory"></bean>
<bean id="UserDao" factory-bean="instanceFactory" factory-method="getUserDao"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}

自定义工厂获取bean:

    工厂类:

public class MyFactoryBean implements FactoryBean {public Object getObject() throws Exception {System.out.println("FactoryBean getObject");return new UserDaoIim();}public Class<?> getObjectType() {return null;}
}

xml关键配置:

 <!--FactoryBean 获取实例-->
<bean id="UserDao" class="com.dt.factory.MyFactoryBean"></bean>

测试:

public class MyTest {private UserDao userDao;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.save();}
}
​

赋值(引用类型用ref,基本数据类型用value):

     实现类(赋值给userDao和number)(该类其他代码不变):

private UserDao userDao;
private Integer number;public Integer getNumber() {return number;}public void setNumber(Integer number) {this.number = number;}@Overridepublic void save() {userDao.save();System.out.println("Service_save");System.out.println(number);}

           xml关键配置:

<bean id="UserDao" class="com.dt.dao.imp.UserDaoIim"></bean><bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp">
<property name="userDao" ref="UserDao"></property><property name="number" value="10"></property></bean>

测试:

public class MyTest {private UserService userService;@Testpublic void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userService = (UserService) applicationContext.getBean("UserServiceImp");
userService.save();}
}

        实现类(该类其他代码不变):

 public UserServiceImp() {}public UserServiceImp(UserDao userDao, Integer number) {this.userDao = userDao;this.number = number;}

        xml关键配置:

    <bean id="UserDao" class="com.dt.dao.imp.UserDaoIim"></bean>
<bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp"><constructor-arg name="userDao" ref="UserDao"></constructor-arg><constructor-arg name="number" value="20"></constructor-arg></bean>

        测试:

public class MyTest {private UserDao userDao;private UserService userService;@Testpublic void springs(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
userService = (UserService) applicationContext.getBean("UserServiceImp");
userService.save();}
}

自动装配(实现类和测试类不变):

        xml关键配置:

<bean id="UserDao"  class="com.dt.dao.imp.UserDaoIim"></bean>
<bean id="UserServiceImp" class="com.dt.service.imp.UserServiceImp" autowire="byType"></bean>

集合赋值

        接口:

public interface Resource { }

        实现类:

public class ResourceImp implements Resource {private String[] array;private List<String> list;private Set<String> set;private Map<String,String> map;public String[] getArray() {return array;}public void setArray(String[] array) {this.array = array;}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}public Set<String> getSet() {return set;}public void setSet(Set<String> set) {this.set = set;}public Map<String, String> getMap() {return map;}public void setMap(Map<String, String> map) {this.map = map;}@Overridepublic String toString() {return "ResourceImp{" +"array=" + Arrays.toString(array) +", list=" + list +", set=" + set +", map=" + map +'}';}
}

        xml关键配置:

 <bean id="UserDao"  class="com.dt.dao.imp.UserDaoIim"></bean>
<!--集合赋值--><bean id="ResourceImp"  class="com.dt.service.imp.ResourceImp"><property name="array"><array><value>sing</value><value>dance</value><value>rap</value></array></property><property name="list"><list><value>list1</value><value>list2</value><value>list3</value></list></property><property name="set"><set><value>set1</value><value>set2</value><value>set3</value></set></property><property name="map"><map><entry key="key1" value="value1"></entry><entry key="key2" value="value2"></entry><entry key="key3" value="value3"></entry></map></property></bean>

        测试(其他不变):

public class MyTest {@Test
public void springs(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
Resource resourceImp = (Resource) applicationContext.getBean("ResourceImp");
System.out.println(resourceImp);}
}

第三方管理(关键配置):

<bean id="名字" class="......"><property name="..." value="..."></property><property name="..." value="..."></property>
</bean>

http://www.lryc.cn/news/348647.html

相关文章:

  • 相同的树LeetCode
  • Vue中如何抽取部分代码到单独的ts文件
  • 山东齐鲁文化名人颜廷利:朱郭有文才,曲高‘菏’寡星光路
  • 嵌入式学习70-复习(wireshark使用和http协议)
  • idea配置MySQL提示
  • 如何利用AI生成答辩PPT?笔灵AI答辩PPT,智能识别关键点
  • 速盾:怎么设置cdn加速小程序图片?
  • Android bootchart 分析启动性能工具使用
  • 一键开启,盲盒小程序里的梦幻奇遇
  • 如何进行并行执行的诊断与调优 —— 《OceanBase 并行执行》系列 6
  • 【Ubuntu系统hgfs共享文件夹不显示问题解决】
  • C++的相关知识集
  • 解决Jmeter报错 :Error generating the report: java.lang.NullPointerException
  • QT外部库:zlib
  • 钡铼技术BL205模块分布式IO集成应用风电场状态监测
  • java博客目录
  • 从零开始学习Linux(8)----自定义shell
  • 《大数据分析-数据仓库项目实战》学习笔记
  • JDK介绍
  • JavaScript 对象入门:基础用法全解析
  • 如何获得一个Oracle 23ai数据库(docker容器)
  • 想跨境出海?云手机提供了一种可能性
  • 制药行业新突破:CANOpen转PROFINET网关配置案例解析
  • vue前端时间段选择控件
  • 用wordpress建外贸独立站的是主流的外贸建站方式
  • 差异基因散点图绘制教程
  • Windows安装多版本MySQL
  • Redis7降级到Redis6如何AOF备份恢复(错的)
  • 通过EXCEL控制PLC启停电机的一种方法
  • 【GPT4O 开启多模态新时代!】