spring入门

简介: ioc:https://www.jianshu.com/p/695b2a25a6ff教学视频:https://www.bilibili.com/video/av14839030/在eclipse里面遇到的问题① .

ioc:https://www.jianshu.com/p/695b2a25a6ff
教学视频:https://www.bilibili.com/video/av14839030/

在eclipse里面遇到的问题

① .遇到红色波浪线就把鼠标放在上面,导入jar包用在crtl+shift+M
②.The constructor ClassPathXmlApplicationContext(String) refers to the missing type出现此问题可能是jar包没有导入成功,将jar包再导入一次

ioc底层原理

IOC:控制反转,把对象创建交给spring进行配置
DI:依赖注入,向类里面的属性设置值
依赖注入不能单独存在,需在ioc基础上完成操作。

img_e0a488a885d615d3962eada28df13d38.png
1.png

img_6251706f57c9ab8adac20dcfb6621625.png
2.png

四个最基本的jar包

beans core  context  expression  common-logging//日志

xml文件限制

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

测试文件

package cn.itcast.ioc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.property.PropertyDemo1;
public class TestIOC {  
    @Test
    public void testUser() {
        ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
        PropertyDemo1 demo1 = (PropertyDemo1) context.getBean("demo");
        demo1.test1();
      }
}

Bean标签常用属性

①.id
起名称,可以任意命名
不能包含特殊符号
根据id得到配置对象

②.class属性
创建对象所在类的全路径

③.name属性
功能和id属性一样,name可以包含特殊字符

④.scope属性
在测试文件中调用两次函数:

img_a14790a8bfbcfa236aab44b2b1c19082.png
4.png

  • singleton 默认值,单例
    运行结果:


    img_8e0df622982802a460e9372ef4bf5716.png
    3.png
  • prototype 多例


    img_4c3b225058ef6bb76590782a17a08f38.png
    5.png

    运行结果:


    img_2ec8a0387194623d06c7b6d7666a41b7.png
  • request 创建对象并把对象放到request里面

  • session 创建对象并把对象放到session里面

  • globalSession 创建对象并把对象放到globalSession里面

属性注入:(spring里面只支持前两种)

img_77c2123c0e75237dd43d93e60339eae3.png
3.png

set方法注入

package cn.itcast.property;
public class Book {
    private String bookname;
    public void setBookname(String bookname) {
        this.bookname=bookname;
    }
    public  void demobook() {
        System.out.println("book...."+bookname);
        
    }
}

然后在applicationContext.xml文件中使用以下方法给bookname赋值

img_78feb6b04b0b97297c4356f0faae7138.png
1.png

有参数构造注入

package cn.itcast.property;
public class PropertyDemo1 {
    private String username;
    public PropertyDemo1(String username) {
        this.username=username;
    }
    public void test1() {
        System.out.println("demo1........"+username);
    }
}

然后在applicationContext.xml文件中使用以下方法给username赋值

img_7268535f36881a90aaec887ad1f5b289.png
1.png

注入对象类型属性
通过set方法在UserService.java调用UserDao.java中的add函数
UserService.java

package cn.itcast.ioc;
public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao= userDao;
    }
      public void add() {
         System.out.println("Service........");
         userDao.add();
   }
}

UserDao.java

package cn.itcast.ioc;
public class UserDao {
     public void add() {
           System.out.println("Dao........");
       }
}

然后在applicationContext.xml文件中使用以下方法给调用

img_8d2ef3ed315cc239e5bf56770a488eeb.png
1.png

目录
相关文章
|
4月前
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
1706 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
5月前
|
安全 Java 数据库
Spring Security 实战指南:从入门到精通
本文详细介绍了Spring Security在Java Web项目中的应用,涵盖登录、权限控制与安全防护等功能。通过Filter Chain过滤器链实现请求拦截与认证授权,核心组件包括AuthenticationProvider和UserDetailsService,负责用户信息加载与密码验证。文章还解析了项目结构,如SecurityConfig配置类、User实体类及自定义登录逻辑,并探讨了Method-Level Security、CSRF防护、Remember-Me等进阶功能。最后总结了Spring Security的核心机制与常见配置,帮助开发者构建健壮的安全系统。
342 0
|
3月前
|
Java 关系型数据库 MySQL
【Spring】【事务】初学者直呼学会了的Spring事务入门
本文深入解析了Spring事务的核心概念与使用方法。Spring事务是一种数据库事务管理机制,通过确保操作的原子性、一致性、隔离性和持久性(ACID),维护数据完整性。文章详细讲解了声明式事务(@Transactional注解)和编程式事务(TransactionTemplate、PlatformTransactionManager)的区别与用法,并探讨了事务传播行为(如REQUIRED、REQUIRES_NEW等)及隔离级别(如READ_COMMITTED、REPEATABLE_READ)。
295 1
|
3月前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
386 0
|
5月前
|
存储 安全 Java
Spring Security 入门与详解
Spring Security 是 Spring 框架中的核心安全模块,提供认证、授权及防护功能。本文详解其核心概念,包括认证(Authentication)、授权(Authorization)和过滤器链(Security Filter Chain)。同时,通过代码示例介绍基本配置,如 PasswordEncoder、UserDetailsService 和自定义登录页面等。最后总结常见问题与解决方法,助你快速掌握 Spring Security 的使用与优化。
1323 0
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
9月前
|
存储 安全 Java
Spring Security 入门
Spring Security 是 Spring 框架中的安全模块,提供强大的认证和授权功能,支持防止常见攻击(如 CSRF 和会话固定攻击)。它通过过滤器链拦截请求,核心概念包括认证、授权和自定义过滤器。配置方面,涉及密码加密、用户信息服务、认证提供者及过滤器链设置。示例代码展示了如何配置登录、注销、CSRF防护等。常见问题包括循环重定向、静态资源被拦截和登录失败未返回错误信息,解决方法需确保路径正确和添加错误提示逻辑。
544 2
Spring Security 入门
|
8月前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
2150 7
|
9月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
314 7
Spring Boot 入门:简化 Java Web 开发的强大工具