IntelliJ IDEA报错:There is not enough memory to perform the requested operation的解决办法
原因当前idea占用的运行内存大于默认的最大运行内存
解决办法修改允许占用最大运行内存修改idea允许占用的最大运行内存,根据下图打开idea的内存配置文件,修改Xmx(根据自己的情况设置,一般2048M就可以了)
我的idea内存配置文件内容如下:(主要修改Xmx,数值为内存的大小,单位为兆)
1234567891011121314-Xms512m-Xmx2048m-XX:ReservedCodeCacheSize=512m-XX:+UseG1GC-XX:SoftRefLRUPolicyMSPerMB=50-XX:CICompilerCount=2-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-ea-Dsun.io.useCanonCaches=false-Djdk.http.auth.tunneling.disabledSchemes=""-Djdk.attach.allowAttachSelf=true-Djdk.module.illegalAccess.silent=true-Dk ...
IntelliJ IDEA使用Tomcat启动项目时控制台信息出现中文乱码的解决办法
Tomcat信息出现中文乱码打开设置
找到下图设置
修改设置将上图中的Default Encoding修改为UTF-8
输出语句乱码也就是System.out.println()打印的信息出现乱码,下图的第三个UTF-8后打上勾
IntelliJ IDEA启动Tomcat时报错:Address localhost:1099 is already in use的解决办法
原因1099端口已经被其它程序占用
解决办法干掉占用该端口的程序,释放1099端口,具体步骤查看博客:Windows10 释放被占用端口 | LeDao 的博客 (zoutl.cn)
Spring使用注解实现AOP
使用到的注解@Aspect用于标注使用这个注解的类是一个切面
@Before执行业务代码前先执行这个方法
@After执行业务代码后再执行这个方法
@Around环绕增强方法使用
实现过程Service接口1234567891011121314151617181920212223242526272829package com.ledao.service;/** * @author LeDao * @company * @create 2022-02-17 20:29 */public interface StudentService { /** * 添加学生 */ void add(); /** * 删除学生 */ void delete(); /** * 修改学生 */ void update(); /** * 根据id查找学生 */ void findById();}
Service接口实现类12345678910111213141516171819 ...
自定义类实现AOP
Service接口1234567891011121314151617181920212223242526272829package com.ledao.service;/** * @author LeDao * @company * @create 2022-02-17 20:29 */public interface StudentService { /** * 添加学生 */ void add(); /** * 删除学生 */ void delete(); /** * 修改学生 */ void update(); /** * 根据id查找学生 */ void findById();}
Service接口实现类12345678910111213141516171819202122232425262728293031package com.ledao.service.impl;import com.ledao.service.StudentService ...
使用Spring的API接口实现AOP
引入AOP的依赖123456<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version></dependency>
Service接口1234567891011121314151617181920212223242526272829package com.ledao.service;/** * @author LeDao * @company * @create 2022-02-17 20:29 */public interface StudentService { /** * 添加学生 */ void add(); /** ...
在字段上使用@Autowired注解时提示:Field injection is not recommended
概述之所以会出现这个提示,是因为Spring 4.0开始就不推荐使用属性注入,改为推荐Setter注入和构造器注入
解决办法想不出现这个提示,解决办法有4个:
Setter注入
构造器注入
直接使用JDK的注解@Resource
如果还是想继续在字段上使用@Autowired注解,又不想出现这个提示,那就修改idea的配置让它不提示
Setter注入(推荐)123456private UserDao userDao;@Autowiredpublic void setUserDao(UserDao userDao) { this.userDao = userDao;}
构造器注入在UserServiceImpl.java注入UserDao
123456789private UserDao userDao;public UserServiceImpl() {}public UserServiceImpl(UserDao userDao) { this.userDao = userDao;}
配置类注册UserS ...
Spring一些注解的说明以及用法
@Configuration说明相当于把该类作为Spring的XML配置文件中的beans标签,说明这是一个配置类
用法将该注解放在类的上面
123456789101112package com.ledao.config;import org.springframework.context.annotation.Configuration;/** * @author LeDao * @company * @create 2022-02-15 20:39 */@Configurationpublic class MyConfig {}
@Bean说明等价于Spring的XML配置文件中的bean标签,用于注册bean对象
用法标注在方法上(返回某个实例的方法),如果没有定义name属性那么bean的id为方法名,定义了name属性那么bean的id为name的属性值(这时候就不可以用方法名了);这个方法的名字相当于bean标签中id属性,这个方法的返回值相当于bean标签中的class属性
123456789101112131415161718192021packa ...
使用注解实现Spring自动装配
概述实现Spring自动装配的注解有两个:@Autowired和@Resource,两个注解的区别如下:
@Autowired
出处:这是Spring的注解
用法:可以放在属性上面(这时候可以省略setter方法),也可以放在setter方法上面,一般放在属性上面即可
实现方式:通过byType的方式实现,需要保证所有bean的class唯一,即不可以存在相同类型的bean
指定要装配的bean的id的方式:可以使用@Qualifier注解指定bean的id,这个注解使用value属性指定bean的id
@Resource
出处:这是JDK的注解
用法:放在属性上面
实现方式:默认通过byName的方式实现,如果找不到名字,则通过byType实现,需要保证所有bean的class唯一,即不可以存在相同类型的bean;如果两个都找不到的情况下,就报错
指定要装配的bean的id的方式:指定bean的id的方式有3种:①根据Setter方法名指定自动装配的bean的id,例如:Setter的方法名为setDog1,所以bean的id就必须为dog1②通过@Resource注解的n ...
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 ...