
04 spring
青春1314
这个作者很懒,什么都没留下…
展开
-
安全分析状态枚举类
/** * 安全分析状态枚举类 */public enum SecAnalysisStatusEnum { NOT_STARTED(1, "尚未开始"); private Integer Code; private String value; SecAnalysisStatusEnum(Integer code, String value) { Code = code; this.value = value; } .原创 2021-03-12 22:53:31 · 114 阅读 · 0 评论 -
集合工具类
import org.springframework.util.CollectionUtils;import java.util.ArrayList;import java.util.List;/** * 集合工具类 * */public class ListUtils { /** * 集合取交集 * * @param firstList 第一个集合 * @param secondList 第二个集合 * @param <T.原创 2021-08-24 22:13:41 · 72 阅读 · 0 评论 -
Spring IOC流程
spring ioc原创 2022-07-13 18:30:02 · 407 阅读 · 0 评论 -
spring解决循环依赖图
spring解决循环依赖图原创 2022-07-12 11:19:52 · 72 阅读 · 0 评论 -
spring源码编译报错Error resolving plugin [id: ‘io.spring.gradle-enterprise-conventions‘, version: ‘0.0.2‘]
spring源码原创 2022-07-10 10:16:30 · 4979 阅读 · 0 评论 -
jdk动态代理
1、接口/** * 用户管理接口 * */public interface UserManager { // 新增用户抽象方法 void addUser(String userName, String password);}2、实现类/** * 用户管理实现类,实现用户管理接口 * */public class UserManagerImpl implements UserManager { @Override public void ad原创 2021-07-24 15:33:06 · 69 阅读 · 0 评论 -
@Autowired自动装配原理?
在启动Spring IOC时,容器自动装配了一个AutowiredAnnotationBeanPostProcesspr后置处理器,当容器扫描到@Autowired时,就会在IOC容器自动查找需要的Bean,并装配给该对象的属性。①在使用@Autowired时,首先在容器中查询对应类型的Bean,如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据;如果查询的结果不止一个,那么@Autowired会根据名称来查找;如果查询的结果为空,那么会抛出异常②@Qualifier标记,来原创 2021-06-22 23:10:39 · 452 阅读 · 0 评论 -
@Value的使用
1、实体类import org.springframework.beans.factory.annotation.Value;public class Bird { @Value("喜鹊") private String name; @Value("#{20-8}") private Integer age; @Value("${bird.colour}") private String colour; @Override p原创 2021-06-20 10:55:28 · 568 阅读 · 0 评论 -
BeanFactory
public interface BeanFactory { // 如果使用Bean的名称检索,是由FactoryBean创建的bean,如果使用&加Bean的名称检索,是返回工厂 String FACTORY_BEAN_PREFIX = "&"; }...原创 2021-04-02 01:05:43 · 160 阅读 · 0 评论 -
自定义初始化和销毁方法
Bean的生命周期是指Bean的创建、初始化、销毁的过程。(1) @Bean指定initMethod和destroyMethod①实体类public class Car { public Car() { System.out.println("Car构造方法"); } public void init () { System.out.println("Car初始化"); } public void destory ()原创 2021-03-31 00:29:02 · 116 阅读 · 0 评论 -
@Import的使用方法
1、直接填class数组(1)实体类public class Cat { private int id; private String name;}public class Dog { private int id; private String name;}(2)配置类import com.it.huaxin.vo.Cat;import com.it.huaxin.vo.Dog;import org.springframework.con原创 2021-03-08 00:01:09 · 1374 阅读 · 0 评论 -
@Conditional的 使用
1、阻止配置类的处理在配置类,类上面使用@Conditional,value指定返回false的Condition时,spring会跳过不处理这个 配置类。(1)自定义实现Condition接口的类import org.springframework.context.annotation.Condition;import org.springframework.context.annotation.ConditionContext;import org.springframework.co原创 2021-02-26 01:19:23 · 334 阅读 · 0 评论 -
spring常用方法
1、getBeanNamesForType()AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PersonConfig.class);String[] beanNames = context.getBeanNamesForType(Person.class);Arrays.stream(beanNames).forEach(System.out::println);// 结果原创 2021-01-21 22:36:09 · 419 阅读 · 0 评论 -
spring声明式事务
1、pom.xml<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version></dependency><dependency> <groupId>org.pro原创 2020-12-01 21:37:26 · 93 阅读 · 0 评论 -
AOP通知类型
前置通知:@Before,在连接点方法执行之前执行。 后置通知:@After,在连接点方法执行之后,无论如何都会执行。 环绕通知:@Around,在连接点方法执行之前和之后执行。连接点发生异常时,之后不执行。 异常通知:@AfterThrowing,在连接点方法发生异常之后执行。 返回通知:@AfterReturning,在连接点方法返回结果后执行。如果发生异常,则不会执行。1、pom.xml<dependencies> <depe...原创 2020-10-05 14:18:58 · 237 阅读 · 0 评论 -
@Autowired 注解自动装配时,注入Bean的优先级(@Bean、@Primary、@Qualifier)
第一种情况:如果在TestDao类中声明了@Repository,且用@ComponentScan添加了TestDao类所在的包扫描, 则默认会创建一个testDao在IOC容器中。如果在配置类中用@Bean注解,方法名和别名都是testDao的话,则会覆盖默认对象。 方法名或别名不为testDao的话,则会新创建一个TestDao对象在IOC容器中。 第二种情况:如果IOC容器存在两个TestDao实例,@Autowired自动装配,会根据变量名称去IOC容器中查找,若找不到则会报...原创 2020-09-29 23:12:12 · 3581 阅读 · 0 评论 -
@Value注解的使用
1)、注入普通字符串 例如: @Value("张三") private String name; 2)、注入表达式结果 例如: @Value("#{23*2}") private Integer age; 3)、注入配置文件属性 例如: @Value("${url}")1、pom.xml<dependencies> <depend...原创 2020-09-29 21:11:05 · 1460 阅读 · 0 评论 -
Spring Bean的初始化和销毁方法四:实现BeanPostProcessor(后置处理器)接口,在bean初始化前后执行操作。
1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency>原创 2020-09-22 22:53:36 · 213 阅读 · 0 评论 -
Spring Bean的初始化和销毁方法三:可以使用JSR250规则定义的(java规范)两个注解来实现
可以使用JSR250规则定义的(java规范)两个注解来实现 @PostConstruct: 在Bean创建完成,且属于赋值完成后进行初始化,属于JDK规范的注解 @PreDestroy: 在bean将被移除之前进行通知, 在容器销毁之前进行清理工作1、pom.xml<dependencies> <dependency> <groupId>org.springframewor...原创 2020-09-22 22:08:42 · 137 阅读 · 0 评论 -
Spring Bean的初始化和销毁方法二:让bean实现InitializingBean和DisposableBean接口
1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency>原创 2020-09-22 21:49:27 · 121 阅读 · 0 评论 -
Spring Bean的初始化和销毁方法一:通过设置bean的initMethod和destroyMethod属性指定初始化和销毁方法。
1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency>原创 2020-09-22 21:17:10 · 237 阅读 · 0 评论 -
使用spring提供的FactoryBean(工厂bean)注入组件
使用spring提供的FactoryBean(工厂bean) a.默认获取到的是,工厂bean调用getObject创建的对象。 b.要获取工厂bean本身,我们需要给id前面加一个&。1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>...原创 2020-09-20 21:50:43 · 366 阅读 · 0 评论 -
Assert断言对象是否为空
import com.it.vo.User;import org.springframework.util.Assert;public class Test { public static void main(String [] agrs) { User user = null; Assert.notNull(user, "User must not be null"); }}//结果:Exception in thread "main" j.原创 2020-09-20 20:23:59 · 5540 阅读 · 0 评论 -
spring @Import结合org.springframework.context.annotation.ImportBeanDefinitionRegistrar接口,给容器注入组件
1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency>原创 2020-09-17 23:15:17 · 501 阅读 · 0 评论 -
spring @Import结合org.springframework.context.annotation.ImportSelector接口,注入bean
ImportSelector:返回需要导入到IOC容器组件的全类名数组。1、pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</ve原创 2020-09-14 23:23:13 · 709 阅读 · 0 评论 -
spring @Import注解的使用
@Import只能用在类上,通过导入的方式,把实例加入spring的IOC容器中。@Import({ 要导入的容器中的组件 }):容器会自动注册这个组件,id默认是全类名。1、实体类:import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class Person { ..原创 2020-09-14 22:33:59 · 199 阅读 · 0 评论 -
spring @Conditional注解的使用
spring4.0引入的新特性,当你注册bean时,可以对这个bean添加一定的自定义条件,当满足这个条件时,注册这个bean,否则不注册。 实现org.springframework.context.annotation.Condition接口,重写matches方法,返回true则注册被注解的bean,false则跳过被注解的bean。1、实体类import lombok.AllArgsConstructor;import lombok.Data;import lombo...原创 2020-09-14 21:54:45 · 165 阅读 · 0 评论 -
spring ioc源码核心方法
refresh();finishBeanFactoryInitialization(beanFactory);beanFactory.preInstantiateSingletons();getBean(beanName);doGetBean(name, (Class)null, (Object[])null, false);createBean(beanName, mbd, args);doCreateBean(beanName, mbdToUse, ar.原创 2020-09-09 23:04:36 · 110 阅读 · 0 评论 -
ImportBeanDefinitionRegistrar接口:可以手动添加组件到IOC容器
ImportBeanDefinitionRegistrar接口的实现类只能通过@Import方式加载,通常是启动类或者配置类。使用@Import,如果括号的类包含ImportBeanDefinitionRegistrar实现类,则会调用接口的方法,使用BeanDefinitionRegistry注册bean。1、pom.xml文件<dependency> <groupId>org.springframework</groupId> &l...原创 2020-07-23 11:07:25 · 197 阅读 · 0 评论 -
jdk动态代理
1、需要代理的类/** * 需要动态代理的接口 */public interface Subject { public String sayHello();}import com.it.service.Subject;/** * 实际对象 */public class RealSubject implements Subject { @Override public String sayHello() { return "Hell..原创 2020-07-22 20:16:37 · 103 阅读 · 0 评论 -
Aop advice五种通知方式:
@Before:前置通知,在调用目标方法之前执行通知定义的任务@After:后置通知,在目标方法执行结束后,无论执行结果如何,都要执行通知定义的任务。@AfterReturning:返回通知,在目标方法执行结束后,如果执行成功,则执行通知定义的任务。@AfterThrowing:异常通知,如果目标方法执行过程中抛出异常,则执行通知定义的任务。@Around:环绕通知,在目标方法执行前和执行后,都需要执行通知定义的任务。...原创 2020-07-18 21:55:27 · 843 阅读 · 0 评论 -
@Autowired、@Resource和@Inject的区别
@Autowired:spring自带的,默认优先按照类型去容器中找对应的组件,如果找到多个相同类型的组件,再将属性的名称作为组件 的id去容器中查找,有个属性为required,可以配置为false,如果配置为false之后,当没有找到相应bean的时候,系统不会抛错, 支持@primary注解,让Spring进行自动装配的时候,默认使用首选的bean。 @Resource:是JSR250规范实现的,默认是按照组件名称进行装配的,没有支持@primary功能,没有required=...原创 2020-07-18 16:17:05 · 305 阅读 · 0 评论 -
@Autowired的使用
@Autowired 始于Spring2.5的注解,是根据类型来进行装备的。当找不到一个匹配的Bean时,spring容器将抛出NoSuchBeanDefinitionException。当存在两个以上的bean时,spring容器将抛出NoUniqueBeanDefinitionException。这个时候用@Qualifier就正常。1、pom.xml<dependency> <groupId>org.springframework</groupId&原创 2020-07-09 23:28:36 · 521 阅读 · 0 评论 -
使用FactoryBean方式将组件注入IOC容器
1、pom.xml依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version></dependency>2、实体类import lombok.AllArgsConstructor;原创 2020-06-01 23:40:58 · 317 阅读 · 0 评论 -
@Lazy注解的使用
容器启动时,不创建对象,当且第一次获取的时候,才会调用方法创建放在IOC容器中。import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructorpublic class Person { private String name; private int age; public Person(String name, int age) { System.out.p.原创 2020-05-30 00:55:19 · 742 阅读 · 0 评论 -
@Scope注解的作用及使用
@Scope("prototype")//多实例,IOC容器启动的时候,并不会调用方法创建对象,而是当每次从容器获取的时候,才会调用方法创建对象。@Scope("singleton")//单实例,IOC容器启动的时候,就会调用方法创建对象并放在IOC容器中,以后每次获取都是从容器当中拿同一个对象。...原创 2020-05-30 00:17:59 · 1517 阅读 · 0 评论 -
@Bean注解方式将组件注册spring容器
1、pom.xml依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version></dependency>2、实体类import lombok.AllArgsConstructor;原创 2020-05-27 22:42:25 · 142 阅读 · 0 评论 -
beans.xml方式将组件注册spring容器
1、pom.xml依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version></dependency>2、实体类import lombok.AllArgsConstructor;原创 2020-05-27 22:17:20 · 134 阅读 · 0 评论