快速配置
创建项目
下载并引入依赖包
下载地址:Spring-5.3.9
官网下载方式参考:官网下载Spring的jar包教程
编写代码
写一个普通类用作注入的bean:
package com.hqz;
public class Student {
public void study() {
System.out.println("I am learning");
}
}
编写配置文件(配置文件的头部信息是固定的):
测试类:
package com.hqz;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
Student student = applicationContext.getBean("student", Student.class);
student.study();
}
}
最终的项目结构如下图所示:
Bean管理
XML方式
创建对象
三种属性注入方式
set方法注入
public Class Book {
private String name;
public void SetName(String name) {
this.name = name;
}
}
有参构造注入
public Class Orders {
private String name;
private String address;
public Orders(String name, String address) {
this.name = name;
this.address = address;
}
}
p名称空间注入
- 第一步:添加p名称空间在配置文件中
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- 第二步:进行属性注入,在bean标签里面进行操作
各种数据类型注入
注入null值
注入特殊符号
>]]>
注入外部bean
使用ref注入
注入内部bean
//部门类
package com.hqz.bean;
public class Dept {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//员工类
package com.hqz.bean;
public class Emp {
private String name;
private String sex;
private Dept dept;
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
注入集合属性
数组类型属性注入
public class Student {
private String[] names;
public void setNames(String[] names) {
this.names = names;
}
}
张三
李四
list类型属性注入
public class Student {
private List names;
public void setNames(List names) {
this.names = names;
}
}
张三
李四
map类型属性注入
public class Student {
private Map maps;
public void setMaps(Map maps) {
this.maps = maps;
}
}
set类型属性注入
public class Student {
private Set sets;
public void setSets(Set sets) {
this.sets = sets;
}
}
李四
注入对象到集合中
public class Book {
private String bookName;
public void setBookName(String bookName) {
this.bookName = bookName;
}
}
public class Library {
private List bookList;
public void setBookList(List bookList) {
this.bookList = bookList;
}
}
提取集合注入
把通用的集合列表提取出来,方便在多个地方进行引用。
- 引入util命名空间
- 创建bean类
public class Library {
private List bookList;
public void setBookList(List bookList) {
this.bookList = bookList;
}
}
- 编写配置类
《三国演义》
《西游记》
《水浒传》
《红楼梦》
外部属性文件
- 引入命名空间
xmlns:context="http://www.springframework.org/schema/context"
编写外部文件
jdbc.properties
prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/userDb
prop.userName=root
prop.password=root
- 配置
注解方式
创建对象
- 配置文件中开启组件扫描
- 添加注解
package com.hqz.service;
import org.springframework.stereotype.Component;
//在注解里面value属性值可以不写
//默认值是类名称,首字母小写
@Component(value = "userService")
public class UserService {
public void add() {
System.out.println("中华人民共和国");
}
}
- 组件扫描配置
注解说明
- @AutoWired:根据属性类型进行自动装配
@Service
public class UserService {
@Autowired
private UserDao userDao;
public void add() {
userDao.add();
}
}
- @Qualifier:根据属性名称进行注入(比如有多个实现类的接口)
@Service
public class UserService {
@Autowired
@Qualifier( value = "userDaoImpl")
private UserDao userDao;
public void add() {
userDao.add();
}
}
- @Resource:可以根据类型注入,也可以根据名称注入
@Service
public class UserService {
@Resource
private UserDao userDao;
public void add() {
userDao.add();
}
}
- @Value:注入普通类型属性
public class Book {
@Value("《金瓶梅》")
private String bookName;
}
完全注解开发
- 创建配置类,替代xml配置文件
//作为配置类,替代xml
@Configuration
@ComponentScan(basePackages = {"com.hqz"})
public class SpringConfig {
}
- 使用
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
欢迎关注我的公众号:『深海云帆』