Spring自动装配
概述自动装配是Spring满足bean依赖一种方式,Spring会在上下文中自动寻找,并自动给bean装配属性
自动装配有两种方式:
ByName
根据Setter方法名指定自动装配的bean的id,例如:Setter的方法名为setDog1,所以bean的id就必须为dog1
ByType
需要保证所有bean的class唯一,即不可以存在相同类型的bean
代码实现测试环境一个People有Dog和Cat
手动装配People实体类12345678910111213141516171819202122232425262728293031323334353637383940414243444546package com.ledao.entity;/** * @author LeDao * @company * @create 2022-02-15 18:13 */public class People { private String name; private Dog dog; private Cat cat; public String ...
Spring bean作用域
类型XML配置文件定义Scope时,bean标签使用scope属性即可
Scope
描述
singleton
spring IoC容器只存在一个bean对象实例。
prototype
与单例相反,每次请求bean时,它都会创建一个新实例。
request
在HTTP请求(Request) 的完整生命周期中,将创建并使用单个实例。 只适用于web环境中Spring ApplicationContext中有效。
session
在HTTP会话(Session) 的完整生命周期中,将创建并使用单个实例。 只适用于web环境中Spring ApplicationContext中有效。
application
将在ServletContext的完整生命周期中创建并使用单个实例。只适用于web环境中Spring ApplicationContext中有效。
websocket
在WebSocket的完整生命周期中,将创建并使用单个实例。 只适用于web环境中Spring ApplicationContext中有效。
singleton和prototype的区别s ...
Spring的c和p命名空间
概述Spring的c和p命名空间可以注入依赖,也就是拓展方式注入
代码实现StudentClass实体类1234567891011121314151617181920212223242526272829303132333435363738394041424344package entity;/** * @author LeDao * @company * @create 2022-02-14 14:11 */public class StudentClass { private int id; private String name; public StudentClass() { } public StudentClass(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public vo ...
Spring依赖注入多种类型数据
Student实体类123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108package entity;import java.util.*;/** * @author LeDao * @company * @create 2022-02-13 21:26 */public class Student { private int id; private String name; private StudentClass studentClass; private String[] books; private List<String> hobbies; pr ...
Spring通过注解创建对象
使用到的注解使用到的注解有@Configuration和@Bean
@Configuration标注在类上,相当于把该类作为Spring的XML配置文件中的beans标签
@Bean标注在方法上(返回某个实例的方法),等价于Spring的XML配置文件中的bean标签,用于注册bean对象,如果没有定义name属性那么bean的id为方法名,定义了name属性那么bean的id为name的属性值(这时候就不可以用方法名了)
实现过程Student实体类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455package entity;/** * @author LeDao * @company * @create 2022-02-13 21:26 */public class Student { private int id; private String name; /** * 无参构造方法,如果不存在 ...
Spring配置
概述Spring的配置有beans、bean、import、alias、description
说明beansSpring配置文件的根元素,里面可以包含很多个bean标签
123456<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"></beans>
beanbean标签放在beans标签内部
每一个bean标签为一个对象,常用属 ...
Spring IOC创建对象
创建的方式Spring IOC可以通过无参构造方法和有参构造方法来创建对象,默认是通过无参构造方法创建
无参构造方法如果实体类不存在有参构造方法时可以省略,存在就需要自己写出来(不然就无法通过无参构造方法创建),也就是Set注入
Student实体类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455package entity;/** * @author LeDao * @company * @create 2022-02-13 21:26 */public class Student { private int id; private String name; /** * 无参构造方法,如果不存在有参构造方法时可以省略,存在就需要自己写出来 */ public Student() { } /** * 有参构造方法 * * @par ...
Windows11设置环境变量
打开设置按下Windows键,点击设置的按钮
打开高级系统设置打开设置界面后,左侧菜单选择系统,右侧选择关于
然后点击高级系统设置
选择环境变量
添加环境变量点击第二个新建,第一个是当前用户的用户变量(只对当前用户有效),而环境变量对所有用户有效
Spring Boot使用jasypt加密数据库密码
引入jasypt依赖12345<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version></dependency>
设置jasypt加密的盐值在application.yml配置文件中设置jasypt加密的盐值
123jasypt: encryptor: password: ledao
获取加密后的数据库密码在测试模块中使用下面代码获取加密后的数据库密码,我的数据库密码为123456,下面代码在控制台打印加密后的数据库密码
1234567891011121314151617181920package com.ledao;import org.jasypt.encryption.StringEncryptor;import org.junit.jupiter. ...
Spring Boot引用application.yml配置文件的属性
添加一个属性首先在application.yml配置文件中添加一个属性,并给它赋值
直接在代码中引用通过@Value注解即可在当前类定义变量并获得属性的值
12@Value("${maxBorrowBookSize}")private Integer maxBorrowBookSize;
使用这个属性值就直接像一般变量那样使用即可,这个变量是当前类可用
12345if (borrowRecordList2.size() == maxBorrowBookSize) { resultMap.put("success", false); resultMap.put("errorInfo", "借书失败,你同时借阅的图书过多,每次最多同时借阅" + maxBorrowBookSize + "本图书!!"); return resultMap;}
使用配置文件属性实体类说明上面是直接在要使用属性的类中使用,这样不方便管理,如果多个类都 ...