Spring框架的基本使⽤与标签
Spring框架的基本使⽤与标签
框架的概念
(⼀)从现实⽣活的⾓度来看: 框架,就好像是 “风筝”⾻架。 如果我给你⼀个“风筝”的⾻架,你只需要去往这个“风筝⾻架”上,贴上⼀层纸。⼀个现成的风筝就做好啦~~ 如果没有“风筝的⾻架”,那你需要,⾃⼰去“⽵⼦”“⽊材”“铁丝”等等东西,然后还要“⾃⼰⼿⼯”的做出⼀个“风筝⾻架”来。。。呵呵,想⼀想,如果你做100个风筝的话。。。估计就要把⼈给“累死”啦。。。
(⼆)从技术⾓度来看
框架就是半个做好的程序。如果我们要编写程序的话,只需要花费 ⼀半的时间精⼒,就可以完成,整个程序了。。。 因为这个现成的“框架”,已经帮我们做好了了⼀半啦。。。 这就是为什么,要使⽤“框架”,因为这样能够让我们,更加快速的开发出程序来。。。 当然了,其实也可以不⽤框架,那样的话。。。就要上⾯那个“风筝”似的。。。太累了。。
总结:spring框架可以简化我们的开发,使开发更⾼效,快捷
控制翻转概念(IoC)
没⽤spring之前,如果想⽤⾃⼰创建的⼀个学⽣类
Student student = new Student
spring相当于⼀个容器,在spring的配置⽂件中管理这这些类,以前的⽅法是我们⾃⼰想⽤就new出来⼀个,是我们在控制这这些类做什么事,后者是spring在帮我们管理这些类,如:给学⽣类的成员变量赋值。
spring⼊门案例
实体类Student
package com.itheima.domain;
public class Student {
public Student(){
}
public void save(){
System.out.println("unning");
}
}
1.导包(maven的pom⽂件中导⼊spring的jar包)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
2.在配置⽂件的⽬录resources下创建spring的核⼼配置⽂件(l)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xsi="/2001/XMLSchema-instance"
schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">
<bean id="student"class="com.itheima.domain.Student"/>
</beans>
使⽤spring管理类,配置⽂件中定义bean标签,id属性是唯⼀标识,见名知义,class属性是student类的全限定类名。
3.在主⽅法中使⽤spring创建student对象
package ller;
import com.itheima.domain.Student;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args){
//读取spring的核⼼配置⽂件
ApplicationContext ctx =new ClassPathXmlApplicationContext("l");
//使⽤spring中getBean,参数传递id属性值,就可以获取student对象
Student student =(Student) Bean("student");
student.save();
}
}
控制台打印效果
student…running
bean标签中scope属性
<!--singleton是scope的默认属性,表⽰单例对象,在创建对象时只会创建⼀个对象-->
<bean id="student"scope="singleton"class="com.itheima.domain.Student"/>
<!--prototype表⽰多例对象,在创建对象时每调⼀次getBean⽅法都会创建⼀个不同的对象--> <bean id="student"scope="prototype"class="com.itheima.domain.Student"/>
静态⼯⼚与实例⼯⼚创建bean
⼯⼚类
package com.itheima.factory;
import com.itheima.service.UserService;
import com.itheima.service.impl.UserServiceImpl;
public class UserServiceFactory {
public static UserService getUserService(){
return new UserServiceImpl();
}
}
接⼝
package com.itheima.service;
public interface UserService {
void save();
}
接⼝实现类
package com.itheima.service.impl;
import com.itheima.dao.UserDao;
import com.itheima.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void save(){
System.out.println("unning"+number);
userDao.save();
}
}
乱码入口一二三2021如果是静态⼯⼚,只⽤在bean标签中加上factory-method⼀个属性
<bean id="userService"class="com.itheima.factory.UserServiceFactory"factory-method="getUserService"/>
静态⽅法直接使⽤类名加⽅法名就可以调⽤,所以只⽤告诉spring⼯⼚类的⽅法就可以了(因为⼯⼚类中有多个⽅法,所以要指定哪个⽅法)
如果是实例⼯⼚,要使⽤到factory-bean和factory-method两个属性
<bean id="userServiceFactory"class="com.itheima.factory.UserServiceFactory"/>
<bean id="userService"factory-bean="userServiceFactory"factory-method="getUserService"/>
实例⼯⼚的⽅法不是静态,就是没有static,不能直接调⽤,就必须让spring先创建⼯⼚类的对象,再通过另⼀个bean标签的factory-bean属性获取⽅法内的对象。
依赖注⼊(DI)
string数组输入set注⼊
⼀个类中不⽌有⽅法,还有成员变量,spring提供了两种赋值的⽅法,⼀种是set注⼊,⼀种是构造⽅法注⼊。
student实体类
package com.itheima.domain;
public class Student {
private String username;
private String password;
public Student(){}
public Student(String username, String password){
this.username=username;
this.password=password;
}
public void setUsername(String username){
this.username = username;
}properties是什么文件
public void setPassword(String password){
this.password = password;
}
public void save(){
System.out.println("unning");
}
@Override
public String toString(){
return"Student{"+
"username='"+ username +'\''+
", password='"+ password +'\''+
'}';
}
}
两个String类型的成员变量,使⽤set注⼊的⽅式赋值,在类中就必须提供set⽅法
<bean id="student"class="com.itheima.domain.Student">
<property name="username"value="zhangsan"/>
<property name="password"value="1234"/>
</bean>
在bean标签中给两个参数赋值,使⽤property标签,name属性就是对应成员变量的变量名,value属性的值就是想要赋的值。打印效果
Student{username='zhangsan', password='1234'}
构造⽅法注⼊
使⽤构造⽅法的⽅式注⼊需要在类中提供满参的构造⽅法,property标签换成constructor-arg标签,后⾯⼀样。
<bean id="student"class="com.itheima.domain.Student">
<constructor-arg name="username"value="zhangsan"/>
<constructor-arg name="password"value="1234"/>
</bean>
构造⽅法注⼊如果不指定name属性,就会给构造⽅法的第⼀个变量赋值zhangsan,第⼆个变量赋值1234,name属性还可以⽤index,从0开始计,0对应的就是第⼀个变量名,以此类推。
集合注⼊
初级怎么学英语数组防疫网站网页设计
如果student类中有⼀个类型为数组的成员变量
<property name="arr">
<array>
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
listview控件的滚动用法<value>5</value>
</array>
</property>
name属性还是变量的名字,值是多个,在property标签中定义array标签,每个value就是⼀个值。
map集合
<property name="maps">
<map>
<entry key="姓名"value="张三"></entry>
<entry key="性别"value="男"></entry>
</map>
</property>
map集合⼀个key(键)对应⼀个value(值),在property中定义map标签,map标签中还需要定义entry标签,⼀个key属性,⼀个value属性。
p命名空间的引⼊与使⽤(不常⽤)
使⽤p命名空间给属性赋值需要在beans标签中加⼀条属性
xmlns:p="/schema/p"
使⽤则是p:加上变量名=⼀个值
<bean id="student"class="com.itheima.domain.Student"username="zhangsan"password="1234"/>
使⽤spring读取properties⽂件信息
需要加⼀个标签Context,在配置⽂件中加⼀个属性和两句话
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns ="/schema/beans "
xsi="/2001/XMLSchema-instance"
p="/schema/p"
加上⼀条context的属性
context="/schema/context"
schemaLocation="/schema/beans
/schema/beans/spring-beans.xsd
下⾯两句是加上context标签,因为要使⽤context标签读取properties配置⽂件
/schema/context
/schema/context/spring-context.xsd">
加上context属性和标签就可以⽤spring读取properties配置⽂件的信息例如JDBC的properties⽂件
jdbc.sql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=root
注:⽂件中的jdbc.username不要写成username,要不spring会把电脑的⽤户名读取出来。
属性名的⽅式获取,如
读取完配置⽂件如果要使⽤配置⽂件中的某个属性可以⽤{jdbc.username} = root。
使⽤import标签导⼊配置⽂件
例如开发中有多个spring的配置⽂件,⼀个⽂件写⼀种类的bean,那么在读取配置⽂件的时候⼜只能读取⼀个⽂件(多个参数的读取配置⽂件⽅法不常⽤),只能⽤import标签导⼊另⼀个⽂件bean
<import resource=""/>
resource写导⼊的配置⽂件名字,要注意的是在导⼊配置⽂件时
同id的bean,后定义的覆盖新定义的,但是在同⼀个⽂件中,不能定义两个id相同的bean,不然会报错
导⼊配置⽂件就当与把导⼊进来的⽂件复制进来
导⼊配置⽂件顺序不同就可能导致最终的运⾏效果不同
第三⽅bean的配置⽅式(如druid)
想要配置第三⽅的bean就要知道第三⽅的全限定类名,⽐如com.alibaba.druid.pool.DruidDataSource就是druid连接池类的全限定类名,因为这个连接池对象在创建时需要四个参数,通过set注⼊的⽅式给
成员变量赋值,driverClassName,url,username,password <bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName"value="${jdbc.driver}"/>
<property name="url"value="${jdbc.url}"/>
<property name="username"value="${jdbc.username}"/>
<property name="password"value="${jdbc.password}"/>
</bean>
使⽤spring配置⽂件的⽅式整合mybatis
需要在maven的pom⽂件中导⼊对应的jar包
mysql驱动包,使⽤的什么数据库就⽤对应的jar包
druid包,连接池的jar包
mybatis
spring
mybatis-spring(因为要使⽤spring整合mybatis需要导⼊这个jar包)
spring-jdbc
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论