Bootstrap

spring基础注解的使用

在spring配置文件中
<context:component-scan base-package="com.creawse"/>

这是一个Spring框架的配置文件中的一个组件扫描的代码片段。这个配置用于告诉Spring框架在包com.creawse下扫描组件(包括注解标注的类、接口、注解声明的方法等),并将其注册为Spring管理的组件(例如自动注入、事务管理等)。这样就可以在应用程序中自动发现和使用这些组件。(包扫描器)

@Controller
@Controller是Spring框架中的注解之一,用于标记一个类为Controller(控制器)组件。

Controller组件的主要作用是接收用户的请求,并根据请求的类型和参数,调用相应的业务逻辑处理,并返回视图或者数据给用户。在Spring MVC框架中,Controller负责处理Web请求。

使用@Controller注解标记的类需要配合其他的注解,例如@RequestMapping来指定请求的URL路径,还可以使用@RequestParam注解获取请求参数,@ResponseBody注解返回json数据等等。

通过使用@Controller注解,Spring可以自动扫描和管理这些Controller组件,简化了配置和开发工作。

@Service
@Service是Spring框架中的注解之一,用于标记一个类为服务组件(Service)。

Service组件的主要作用是实现业务逻辑和处理业务数据,可以在业务层中进行一些复杂的业务操作。通常,Service组件被用来封装和处理数据的持久化、事务管理、调用其他外部服务等操作。

使用@Service注解标记的类需要结合其他注解一起使用,例如@Autowired用于自动注入依赖,@Transactional用于声明事务等。

通过使用@Service注解,Spring可以自动扫描和管理这些Service组件,简化了配置和开发工作。在应用程序中,通常会将Service层与Controller层、Repository层(数据访问层)进行分层,实现业务逻辑的解耦和职责划分。

@Repository
@Repository是Spring框架中的注解之一,用于标记一个类为数据访问层(Repository)组件。

@Repository注解的作用如下:

  • 将一个类标记为数据访问层组件,用于操作数据库或其他持久化层。
  • 提供了对数据库访问异常的转译和持久化操作的支持,方便在数据访问层进行异常捕获和处理。
  • 通常与其他注解一起使用,如@Autowired用于自动注入依赖。

@Repository注解的主要目的是与数据相关的操作,它通常用于封装数据库访问逻辑、执行数据库查询和持久化操作。可以通过使用@Repository注解,让Spring能够自动扫描和管理这些数据访问层的组件,简化了配置和开发工作。

需要注意的是,@Repository注解本身并不提供具体的功能或逻辑,它只是一个标记注解,便于开发人员和Spring框架识别并管理数据访问层组件。

@Repository,@Service和@Controller
@Repository@Service@Controller是Spring框架中常用的注解,用于标记不同类型的组件。

  1. @Repository注解:

    • 用于标记数据访问层(Repository)的组件,主要用于操作数据库或其他持久化层。
    • @Repository提供了对数据库访问异常的转译和持久化操作的支持。
    • 通常与@Autowired注解一起使用,以便实现数据访问的依赖注入。
  2. @Service注解:

    • 用于标记服务层(Service)的组件,主要用于封装和处理业务逻辑。
    • @Service组件通常处理复杂的业务操作,如业务逻辑的处理、调用外部服务、事务管理等。
    • 通常与@Autowired注解一起使用,以便实现依赖注入。
  3. @Controller注解:

    • 用于标记控制器层(Controller)的组件,主要用于处理Web请求和响应。
    • @Controller组件接收用户的请求,根据请求进行业务处理,并返回视图或数据给用户。
    • 通常与@RequestMapping注解等一起使用,以便实现请求路由和参数映射。

这些注解都是Spring框架提供的用于标记组件的注解,它们可以用于实现组件的扫描、自动装配和管理。通过正确使用这些注解,可以让Spring自动扫描并创建所需的组件,简化了配置和开发工作。

@RequestMapping
@RequestMapping是Spring框架中的注解之一,用于映射HTTP请求到具体的处理方法。

@RequestMapping注解的作用如下:

  • 将一个方法或类标记为请求处理方法,用于处理特定的HTTP请求。
  • 可以用于处理GET、POST、PUT、DELETE等不同类型的请求。
  • 可以指定URL路径、请求参数、请求头等条件来匹配请求,以确定执行哪个处理方法。
  • 可以指定处理方法的返回类型,用于响应客户端的请求。

@RequestMapping注解通常与控制器层(Controller)的方法一起使用,用于处理Web请求和响应。通过在方法或类上添加@RequestMapping注解,可以定义处理逻辑,并且将该逻辑映射到特定的URL路径和请求类型上。

例如,下面的代码示例演示了@RequestMapping注解的使用:

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable int id) {
        // 处理获取用户信息的逻辑
        // 返回视图名或数据给客户端
        return "user";
    }

    @PostMapping("/create")
    public String createUser(@RequestParam("name") String name, @RequestParam("email") String email) {
        // 处理创建用户的逻辑
        // 返回视图名或数据给客户端
        return "success";
    }
}

上述示例中,@RequestMapping(“/users”)表示所有以/users开头的请求将由UserController处理。而@GetMapping(“/{id}”)和@PostMapping(“/create”)分别用于处理GET和POST请求,并指定了进一步的URL路径和请求参数。

总之,@RequestMapping注解是Spring框架用于映射HTTP请求到处理方法的重要注解。它提供了灵活的配置选项,可以根据具体的请求类型、URL路径等条件来确定要执行的处理方法。

SpringMVC项目的class配置


@Configuration
@ComponentScan("com.creawse")
@EnableWebMvc  // 和<mvc:annotation-driven>
public class SpringMvcConfig implements WebMvcConfigurer {

    //配置视图解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.viewResolver(resourceViewResolver());
    }

    //配置请求视图的映射
    private InternalResourceViewResolver resourceViewResolver(){
        InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}
;