spring常用标签

 

@Autowired

@Autowired注解用于实现依赖注入(Dependency Injection,DI)。它可以应用于类属性、方法和构造函数。
当 Spring 容器创建一个 bean 时,@Autowired 注解会自动将容器中匹配的 bean 实例注入到被标注的属性、方法或构造函数中。这样可以降低代码之间的耦合性,提高可维护性。
在Spring中,Bean的默认作用域是单例(Singleton),这意味着在Spring容器中只会存在一个实例。所以,当你在两个类(Class A和Class B)中使用@Autowired注解注入相同类型的Bean(C类型)时,这两个类中的C实例是相同的。
 
修饰方法
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ExampleService {

private final ExampleRepository exampleRepository;

@Autowired
public ExampleService(ExampleRepository exampleRepository) {
    this.exampleRepository = exampleRepository;
}
}
在这个例子中,ExampleService 类依赖于 ExampleRepository 类的实例。通过在构造函数上添加 @Autowired 注解,我们告诉 Spring 自动注入一个 ExampleRepository 类型的 bean。这样,我们不需要手动创建和管理这些对象及其依赖关系,Spring 会帮我们处理
 
修饰属性
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessageService {

// 使用 @Autowired 注解注入依赖
@Autowired
private MessageRepository messageRepository;

public List<‌Message> getAllMessages() {
    // 调用 messageRepository 的方法获取数据
    return messageRepository.findAll();
}

}

  

 

 

Java Bean

Java Bean 是 Java 语言中的一种特殊类型的类。它是一个遵循特定编码规范的可重用组件,用于封装多个属性和对这些属性进行操作的方法。Java Bean 的设计遵循 JavaBean 规范,该规范主要定义了如何创建一个易于使用、可重用和可移植的组件。 Java Bean 的主要特点包括:
1. **序列化**:Java Bean 具有序列化能力,这意味着它可以将自己的状态保存为字节流,并在稍后需要时将其恢复。这使得 Java Bean 在不同的环境中可移植和易于存储。
 
 
2. **无需参数的构造函数**:Java Bean 必须提供一个无需参数的构造函数,以便可以在没有任何参数的情况下实例化。
 
 
3. **私有属性**:Java Bean 的属性通常是私有的,这意味着它们不能被类的外部直接访问。为了访问和修改这些属性,需要使用公共的 getter 和 setter 方法。
 
 
4. **遵循命名规范**:Java Bean 的 getter 和 setter 方法遵循特定的命名规范。对于布尔类型的属性,getter 方法通常以 is 开头,而其他类型的属性使用 get 开头。类似地,setter 方法使用 set 开头。例如,对于属性 name,Java Bean 应提供 getName() 和 setName(String name) 方法。 Java Bean 常用于数据传输、数据封装和在各种框架中实现数据交互。例如,在 Java 企业应用中,Java Bean 通常用作表示数据库中的数据实体,或者用于在表现层和业务逻辑层之间传递数据。
 

@RestController

@RestController是一个Spring框架中的注解,它用于定义一个类作为RESTful Web服务的控制器。简化RESTful Web服务的创建。

@RestController是一个组合注解,包括@Controller和@ResponseBody两个注解。

@RestController所标注的类将会被视为一个(REST API)控制器,而其中的方法默认都会返回JSON或其他相应的数据格式,而非视图(如HTML页面)。

 1 import org.springframework.web.bind.annotation.GetMapping;
 2 import org.springframework.web.bind.annotation.RestController;
 3 
 4 @RestController
 5 public class HelloWorldController {
 6 
 7 @GetMapping("/hello")
 8 public String helloWorld() {
 9     return "Hello, World!";
10 }
11 
12 }
在这个例子中,我们创建了一个名为HelloWorldController的类,并使用@RestController注解标注。
我们还定义了一个名为helloWorld的方法,它使用@GetMapping注解来映射HTTP GET请求到/hello路径。
当接收到一个GET请求时,helloWorld方法将被调用,并返回字符串"Hello, World!"。
由于@RestController注解的存在,返回的字符串将自动转换为JSON或者XML格式的响应,具体取决于客户端请求的Accept头部信息。
总之,@RestController注解在Spring框架中用于创建RESTful Web服务的控制器,并简化了将方法返回值转换为JSON或XML响应的过程。

@Data

@Data注解通常与 Lombok 库一起使用。
Lombok 是一个 Java 库,能够通过注解方式自动为类生成 getter、setter、构造函数、equals()、hashCode() 和 toString() 等方法。这有助于减少样板代码,并让你专注于实现业务逻辑。

@Component

@Component是一个用于表示类作为组件的注解。
当Spring扫描你的包(package)时,它会自动识别标记为@Component的类,并将这些类实例化为Bean对象,这样它们就可以在Spring应用程序上下文中使用。
这是依赖注入(Dependency Injection)和控制反转(Inversion of Control)原则的一部分,这些原则是Spring框架的核心概念。 
package com.example.demo;
import org.springframework.stereotype.Component;
@Component
public class MyComponent {
    // 类的成员和方法
}
在上面的示例中,MyComponent类被标记为@Component,这意味着当Spring扫描包(package)时,它将自动创建一个MyComponent类型的Bean。
值得注意的是,@Component是一个通用注解,用于表示任何类型的组件。还有一些其他更具体的注解,例如@Service、@Repository和@Controller,它们通常用于表示特定类型的组件,如服务层(service layer)、数据访问层(data access layer)和表示层(presentation layer)。
这些特定类型的注解实际上都是@Component的特化,它们会提供额外的语义以表示组件的用途。即使使用这些特定类型的注解,Spring仍然会将它们视为组件,并根据需要实例化Bean。
 
 

@Service

@Service注解是一个用于声明一个类作为业务服务组件的标识。
这个注解是一个特殊类型的@Component注解,它用于指示Spring容器应该将该类作为一个Bean进行管理,并将其添加到应用程序上下文。
@Service注解的主要作用是标识一个类作为业务逻辑层(Service层)的组件。这有助于将业务逻辑与其他层(如数据访问层、控制器层等)进行分离,从而实现代码的高内聚和松耦合。
import org.springframework.stereotype.Service;
@Service
public class MyService {
    // 业务逻辑代码
}
当Spring容器检测到一个类上有@Service注解时,它将自动创建一个Bean实例,并根据定义的类名生成一个默认的Bean名称。此外,你也可以通过在@Service注解中指定一个自定义的名称来覆盖默认的Bean名称。例如:
import org.springframework.stereotype.Service;

@Service("customServiceName")
public class MyService {
    // 业务逻辑代码
}
在其他组件中,你可以使用@Autowired注解将@Service注解的Bean实例注入到需要使用它的地方。例如,在一个控制器中:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

@Autowired
private MyService myService;
// 控制器方法
}

 

总之,@Service注解是Spring框架中用于声明业务逻辑层组件的一种简便方法。它有助于实现代码的高内聚和松耦合,从而提高代码的可维护性和可扩展性。
 
posted @ 2023-08-13 12:38  00000000O  阅读(47)  评论(0编辑  收藏  举报