当前位置: 首页 > news >正文

Spring中常见知识点及使用

Spring Framework 是 Java 生态系统中最流行的开源框架之一,它提供了一系列强大的功能,用于构建企业级应用。以下是一些常见的 Spring 知识点及其使用方法:

1. 依赖注入(Dependency Injection)

依赖注入是 Spring 的核心概念之一,用于实现松耦合和可测试的代码。Spring 提供了多种依赖注入方式:构造函数注入、Setter 方法注入和字段注入。

示例

构造函数注入

@Component
public class Service {private final Repository repository;@Autowiredpublic Service(Repository repository) {this.repository = repository;}
}

Setter 方法注入

@Component
public class Service {private Repository repository;@Autowiredpublic void setRepository(Repository repository) {this.repository = repository;}
}

字段注入

@Component
public class Service {@Autowiredprivate Repository repository;
}

2. Spring 配置

Spring 支持多种配置方式:XML 配置、Java 注解配置和 Java 配置类。

示例

Java 配置类

@Configuration
public class AppConfig {@Beanpublic Repository repository() {return new RepositoryImpl();}@Beanpublic Service service() {return new Service(repository());}
}

3. Spring AOP(面向切面编程)

AOP 用于处理跨越多个模块的关注点,例如日志记录、事务管理、安全性等。

示例

定义切面

@Aspect
@Component
public class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void logBefore(JoinPoint joinPoint) {System.out.println("Before method: " + joinPoint.getSignature().getName());}
}

配置切面支持

@Configuration
@EnableAspectJAutoProxy
public class AppConfig {
}

4. Spring MVC

Spring MVC 是一种 Web 框架,用于构建基于 MVC(Model-View-Controller)模式的 Web 应用。

示例

控制器

@Controller
public class HomeController {@GetMapping("/home")public String home(Model model) {model.addAttribute("message", "Hello, Spring MVC!");return "home";}
}

配置 Spring MVC

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {// 可以在这里添加其他配置,例如视图解析器、资源处理器等
}

5. Spring Data JPA

Spring Data JPA 提供了一种方便的方式来访问和操作数据库,极大简化了数据访问层的开发。

示例

定义实体

@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private String email;// getters and setters
}

定义仓库接口

public interface UserRepository extends JpaRepository<User, Long> {List<User> findByName(String name);
}

6. Spring Boot

Spring Boot 是一种简化 Spring 应用开发的工具,通过自动配置和独立运行的 jar 包,极大减少了开发时间和配置复杂度。

示例

Spring Boot 应用

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

application.properties 配置

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

7. Spring Security

Spring Security 是一个强大的安全框架,用于保护 Spring 应用免受常见安全威胁。

示例

配置类

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("user").password("{noop}password").roles("USER").and().withUser("admin").password("{noop}admin").roles("ADMIN");}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated().and().formLogin().permitAll().and().logout().permitAll();}
}

8. Spring 事务管理

Spring 提供了对事务的声明式和编程式管理,以确保数据操作的一致性和完整性。

示例

声明式事务管理

@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Transactionalpublic void createUser(User user) {userRepository.save(user);// 其他逻辑}
}

启用事务管理

@Configuration
@EnableTransactionManagement
public class AppConfig {
}

总结

以上是Spring中常见的一些知识点及其使用示例。Spring Framework 提供了丰富的功能和灵活的配置方式,可以帮助开发者快速构建高质量的企业级应用。熟练掌握这些知识点,将有助于提高开发效率和代码质量。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode300:最长递增子序列
  • 如何使用nestjs生成一个新的控制器
  • 【区块链 + 智慧政务】一体化政务数据底座平台 | FISCO BCOS应用案例
  • 算法——二分法
  • 懂点技术就可以做,适合程序员的一种生意思路|在FlowUs记录成长 发布知识库
  • 什么是数据挖掘(python)
  • 防火墙(ensp USG6000v)---安全策略 + 用户认证综合实验
  • redis的setnx实现分布式锁
  • 获取商铺信息,以及商铺信息的增删改查
  • 工厂人员定位系统介绍及解决方案
  • View->LinearLayout中动态添加多行多列的ItemView(来源RecyclerView中的ViewHodler)
  • 【Docker-compose】搭建php 环境
  • stm32h743 阿波罗v2 NetXduo http server CubeIDE+CubeMX
  • ABeam News | FY25 ABeam德硕大中华区入社式,飞往崭新航向!
  • MD5加密和注册页面的编写
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • ECS应用管理最佳实践
  • Facebook AccountKit 接入的坑点
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript 基本功--面试宝典
  • React中的“虫洞”——Context
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue的全局变量和全局拦截请求器
  • 诡异!React stopPropagation失灵
  • 计算机常识 - 收藏集 - 掘金
  • 理清楚Vue的结构
  • 聊聊hikari连接池的leakDetectionThreshold
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 回归生活:清理微信公众号
  • 说说我为什么看好Spring Cloud Alibaba
  • 整理一些计算机基础知识!
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​用户画像从0到100的构建思路
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #565. 查找之大编号
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十三)Maven插件解析运行机制
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET4.0并行计算技术基础(1)
  • .NET6 命令行启动及发布单个Exe文件
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • @media screen 针对不同移动设备
  • [000-01-030].Zookeeper学习大纲
  • [1181]linux两台服务器之间传输文件和文件夹
  • [20160807][系统设计的三次迭代]
  • [AI StoryDiffusion] 创造神奇故事,AI漫画大乱斗!
  • [AI 大模型] Meta LLaMA-2
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [C#]DataTable常用操作总结【转】