Spring框架基础知识(02)

简介: Spring框架基础知识

5. 通过Spring创建对象


创建Maven Project,在创建过程中,勾选Create a simple project,Group Id填为cn.tedu,Artifact Id填为spring01,其它项保持默认即可。


使用Spring框架时,必须在项目的pom.xml中添加spring-context的依赖:


<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.5.RELEASE</version>
</dependency>

首先,在项目中,创建cn.tedu.spring包,并在这个包下创建BeanFactory类:

package cn.tedu.spring;
public class BeanFactory {
}

当前,代码放在哪个包中并不重要,应该养成习惯,每个类都应该放在某个包中,不要让任何类不放在任何包中!

以上类的名称也不重要,是自定义的!

如果希望由Spring来创建并管理某个类的对象,必须在以上类中添加方法,关于这个方法:


应该使用public权限;

返回值类型就是需要Spring创建并管理的类的对象的类型;

方法名称可以自定义;

参数列表暂时为空;

在方法体中,自行编写创建返回值对象的代码。

假设需要Spring来创建Date类型的对象,则在类中添加方法:


public Date aaa() {
    // 规范,规则
}


Spring框架要求:创建对象的方法必须添加@Bean注解,并且,这样的方法必须在配置类中!任何一个类添加了@Configuration注解都可以作为配置类!


package cn.tedu.spring;
@Configuration
public class BeanFactory {
  @Bean
  public Date aaa() {
  return new Date();
  }
}


完成后,应该使用一个可以运行的类,或通过单元测试来检验“是否可以通过Spring容器获取对象”。本次先创建一个可以运行的类:

package cn.tedu.spring;
public class SpringTests {
  public static void main(String[] args) {
    // 1. 加载配置类,得到Spring容器
    AnnotationConfigApplicationContext ac
      = new AnnotationConfigApplicationContext(BeanFactory.class);
    // 2. 从Spring容器中获取所需要的对象
    Date date = (Date) ac.getBean("aaa"); // getBean()方法的参数就是创建对象的方法的名称
    // 3. 测试获取到的对象
    System.out.println(date);
    // 4. 关闭
    ac.close();
  }
}


6. 关于@Bean注解


当方法的声明之前添加了@Bean注解,就表示这个方法是需要由Spring框架所调用,并且,由Spring框架管理该方法返回的对象的!默认情况下,该方法的名称就是后续获取对象时,调用getBean()方法的参数!


由于添加了@Bean注解的方法是被Spring框架调用的,不需要自行编写代码来调用这个方法,所以,Spring的建议是“使用合理的属性名称作为方法名,并不需要使用动词或动词为前缀的方法名”,简单的说,如果方法是为了获取Date类型的对象的,该方法的名称应该是date,而不是getDate(),则后续调用getBean()时,参数就是date这个名称!


当然,如果不遵循Spring的建议,还可以在@Bean注解中配置注解参数来指定Bean的名称,例如:


@Bean("date")
public Date getDate() {
    return new Date();
}


其关系如下图:

image.png

其实,在开发项目时,真的不必关心这些问题,也就是说,例如是一个获取Date对象的方法,其名称到底是date还是getDate都是正确的!毕竟这个方法最终就是由Spring框架来调用,开发人员不会自行调用该方法!

目录
相关文章
|
13天前
|
安全 Java 开发者
如何在Spring框架中实现横切关注点的集中管理和重用?
【4月更文挑战第30天】如何在Spring框架中实现横切关注点的集中管理和重用?
18 0
|
13天前
|
安全 Java 程序员
Spring框架的核心特性是什么?
【4月更文挑战第30天】Spring 的特性
17 0
|
3天前
|
XML Java 数据库连接
Spring框架与Spring Boot的区别和联系
Spring框架与Spring Boot的区别和联系
13 0
|
5天前
|
前端开发 安全 Java
使用Spring框架加速Java开发
使用Spring框架加速Java开发
14 0
|
5天前
|
设计模式 数据采集 监控
Spring日志框架
Spring日志框架
8 0
|
5天前
|
前端开发 Java 应用服务中间件
Spring MVC框架概述
Spring MVC 是一个基于Java的轻量级Web框架,采用MVC设计模型实现请求驱动的松耦合应用开发。框架包括DispatcherServlet、HandlerMapping、Handler、HandlerAdapter、ViewResolver核心组件。DispatcherServlet协调这些组件处理HTTP请求和响应,Controller处理业务逻辑,Model封装数据,View负责渲染。通过注解@Controller、@RequestMapping等简化开发,支持RESTful请求。Spring MVC具有清晰的角色分配、Spring框架集成、多种视图技术支持以及异常处理等优点。
12 1
|
13天前
|
SQL Java 数据库连接
Springboot框架整合Spring JDBC操作数据
JDBC是Java数据库连接API,用于执行SQL并访问多种关系数据库。它包括一系列Java类和接口,用于建立数据库连接、创建数据库操作对象、定义SQL语句、执行操作并处理结果集。直接使用JDBC涉及七个步骤,包括加载驱动、建立连接、创建对象、定义SQL、执行操作、处理结果和关闭资源。Spring Boot的`spring-boot-starter-jdbc`简化了这些步骤,提供了一个在Spring生态中更便捷使用JDBC的封装。集成Spring JDBC需要添加相关依赖,配置数据库连接信息,并通过JdbcTemplate进行数据库操作,如插入、更新、删除和查询。
|
13天前
|
SQL Java 数据库连接
Springboot框架整合Spring Data JPA操作数据
Spring Data JPA是Spring基于ORM和JPA规范封装的框架,简化了数据库操作,提供增删改查等接口,并可通过方法名自动生成查询。集成到Spring Boot需添加相关依赖并配置数据库连接和JPA设置。基础用法包括定义实体类和Repository接口,通过Repository接口可直接进行数据操作。此外,JPA支持关键字查询,如通过`findByAuthor`自动转换为SQL的`WHERE author=?`查询。
|
13天前
|
安全 Java 开发者
在Spring框架中,IoC和AOP是如何实现的?
【4月更文挑战第30天】在Spring框架中,IoC和AOP是如何实现的?
22 0
|
13天前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。