avatar
文章
342
标签
52
分类
23

Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About
Southblock'Blog
Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About

Southblock'Blog

Spring自动装配
发表于2024-05-05
Spring注解驱动开发系列: Spring 组件注册 Spring Bean的生命周期 Spring属性赋值 Spring自动转配 Spring注解驱动开发之AOP 自动装配@Autowired标注在属性、构造器、方法、参数、注解上,自动从容器中寻找相同类型的bean赋值,如果有多个相同类型的,则根据bean的id来匹配。 默认是需要完成装配的,否则报错,当然也可以设置为非必须:@Autowired(required = false) 标注在方法上,最常见的就是配置类中结合@Bean和标在set方法上 12345@Bean// factory从容器中获取,可以省略@Autowiredpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { ......} 标在set方法上时,创建bean后属性初始化过程会调用set方法 标注在构造器上 当类中只有一个构造器时,@Autowired可以省略 标注在属性上 标 ...
Spring属性赋值
发表于2024-05-05
Spring注解驱动开发系列: Spring 组件注册 Spring Bean的生命周期 Spring属性赋值 Spring自动转配 Spring注解驱动开发之AOP 属性赋值@Value可以使用@Value标在属性上,给属性赋值,当然也可以标在方法、参数、注解上。 可以直接写值、SpEL(Spring Expression Language)、或者${}取值 示例 12345678public class People { @Value("${people.name}") // 从配置文件中取 private String name; @Value("#{1+2}") // SpEL private String id; @Value("32") // 直接赋值 private int age;} 需要注意的是,如果我们从配置文件中获取值,需要配合使用@Proper ...
bean的生命周期
发表于2024-05-05
Spring注解驱动开发系列: Spring 组件注册 Spring Bean的生命周期 Spring属性赋值 Spring自动转配 Spring注解驱动开发之AOP 生命周期生命周期及对其控制bean生命周期分为7个阶段 创建实例 属性赋值 初始化前 初始化 初始化后 使用 销毁 对于单实例bean,容器创建好了,bean也就创建好了,容器关闭了,bean也调用destroy方法销毁 对于多实例bean,直到使用才会去创建,容器关闭,也不会调用destroy方法销毁 我们使用@Bean注册组件时,可以使用@Bean(initMethod = “init”, destroyMethod = “destroy”)指定初始化方法名,销毁方法名 如果是使用组件扫描加入容器,可以实现InitializingBean, DisposableBean这两个接口,分别实现afterPropertiesSet初始化和destroy销毁方法 另外我们还可以在类中方法上标注@PostConstructor和@PreDestroy注解,表示所标注的方法为初始化方法和销毁方法 ...
Spring组件注册
发表于2024-05-05
Spring注解驱动开发系列: Spring 组件注册 Spring Bean的生命周期 Spring属性赋值 Spring自动转配 Spring注解驱动开发之AOP 组件注册@Configuration声明这是一个配置类 在配置类中可以使用@Bean修饰方法,将该组件加入容器中。组件类型为返回值类型,组件id为方法名。 12345678@Configurationpublic class SpringConfig { // 将组件加入容器中,组件类型为People,组件为People("ming",null,null),组件名称默认为为people1,但是@Bean注解中设置了为people @Bean("people") public People people1(){ return new People("ming",null,null); }} @ComponentScan开启组件扫描,将扫描范围中用@Component、@Re ...
ArrayList和Vector扩容机制
发表于2024-05-05
ArrayList在JDK8中,ArrayList有三种构造方法。特别的,对于ArrayList(),是造了一个空数组。 我们直接找到ArrayList的扩容方法 其中,DEFAULT_CAPACITY=10,minCapacity = 数组现有长度加上需要添加的元素(或集合)的长度。如果现在ArrayLIst存的是一个空数组,那么就取10和minCapacity的最大值。得到了所需最小容量后,该扩容就扩容 具体扩容方式尝试扩容至1.5倍,如果仍不够,则将所需最小容量作为新数组的容量。 JDK1.7,和1.8区别不大,只是1.7是在创建对象的时候,就创建了一个长度为10的数组。而1.8是在首次add添加数据时,才会去创建一个长度最少为10的数组。区别类似于饿汉式与懒汉式。 Vector对于Vectorjdk1.7和1.8是一样的默认初始容量都是10,而且是饿汉式。注意:构造方法中,默认了一个capacityIncrement变量为0。具体扩容细节:我们可以看到,如果指定了capacityIncrement(大于0),就可以让每次扩容时,首先尝试增加capacit ...
StringBuffer和StringBuilder扩容机制
发表于2024-05-05
StringBuffer与StringBuilder的append都是调用父类AbstractStringBuilder的appen方法。 而AbstractStringBuilder的append方法如下,其中有一个ensureCapacityInternal(count + len)方法。其中count+len是所需容量。而ensureCapacityInternal(int minimumCapacity)方法是:如果目前数组长度小于所需长度,则调用newCapacity(minimumCapacity)计算数组所需的长度。具体扩容机制是:尝试扩容为两倍加2,如果还小于所需容量,则直接将所需容量作为实际数组长度。如果大于所需容量,则可以作为实际数组长度。
Lambda表达式与方法引用
发表于2024-05-05
lambda表达式前提条件使用Lambda表达式前提条件是:实现的接口是一个函数式接口 函数式接口函数式接口就是在接口中只能有一个抽象方法。 Java 8 中还有一个注解@FunctionalInterface,表明接口是函数式接口。当然,不标注此注解,他也是函数式接口,注解只是起到编译检查的作用 java 8 提供了四大函数式接口:Consumer,Supplier,Function<T, R>,Predicate。 语法12345678// 这个接口中的accept方法负责接受一个参数,不作返回Consumer<String> consumer = new Consumer<String>() { @Override public void accept(String s) { System.out.println(s); } }; consumer.accept("输出内容"); 等 ...
使用EasyExcel操作Excel
发表于2024-05-05
一、导入依赖12345<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> 二、编写实体类用于接收Excel表中的信息 123456789101112131415@Datapublic class ExcelSubjectData { // 第一列对应的属性(用于读) @ExcelProperty(index = 0) // 表头对应的名称(用于写) @ExcelProperty("一级分类") private String oneSubjectName; // 第二列对应的属性 @ExcelProperty(index = 1) // 表头对应的名称(用于写) @ExcelProperty(" ...
微信二维码登录
发表于2024-05-05
前期准备当然你需要有微信认可的资质 官方参考这里微信官方给出的获取access_token(其中包含了一些用户信息)的时序图 这里附上微信开发文档 | 微信登录部分。成功获取acces_token字符串后,我们自己解析就能获取用户相关信息了。 实践代码相关依赖1234567891011121314151617<!--httpclient--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <!--commons-io--> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</a ...
网页实现发送邮箱验证码
发表于2024-05-05
一、前期准备一个邮箱,并且开通了SMTP服务参考:邮箱如何开启POP3/SMTP服务 二、相关依赖项目依托于springboot,部分依赖不作声明 1234567891011121314151617181920212223242526<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId> spring-boot-starter-data-redis </artifactId> </dependency> <!-- spring2.X集成redis所需common-pool --> <dependency> <groupId>org.apache.commons</groupId> <ar ...
1…333435
avatar
Southblock
个人博客Blog
文章
342
标签
52
分类
23
Follow Me
公告
欢迎来到Southblock' Blog
最新文章
无题2026-09-15
无题2026-09-15
无题2026-09-15
无题2026-09-15
无题2026-09-15
分类
  • AI Agent147
    • Agent23
    • AgentScope14
    • Function Call5
    • Harness & Loop5
    • LangChain4j6
    • MCP16
    • Skills13
标签
Bat脚本 跨域 Claude Code Harness Engineering 微服务 Mem0 LLM JWT 长期记忆 提示词工程 课程介绍 AgentScope 前端 LangGraph MCP 工具调用 CSS3 MySQL 是怎样运行的:从根儿上理解 MySQL Prompt 环境搭建 LangChain4j 大模型 基础概念 Loop Engineering 智能体 工作流 Github Action 快速开始 架构设计 协议 Memory 后端开发 Obsidian Spring AI AI Coding Blog 项目结构 Workflow Dify Skills
归档
  • 九月 2026275
  • 八月 20264
  • 二月 202625
  • 六月 20255
  • 五月 20253
  • 八月 20242
  • 七月 20241
  • 六月 20242
网站资讯
文章数目 :
342
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2026 By Southblock
框架 Hexo|主题 Butterfly