【技术栈】【SSM】SMM的常用注解

这几天学ssm,发现太多了,决定总结一下注解的用法

Mybatis

Spring

一、自动装配:

        首先在xml文件中需要引入注解支持

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
<context:annotation-config/>

        1.@Autowired        按照类型进行自动装配(ByType)

                需要导入的包:spring-aop

                个人的理解:

                        1.首先需要在spring-config.xml中注册要自动装配的类

<bean id="dog" class="com.kuang.pojo.Dog"/>
<bean id="cat" class="com.kuang.pojo.Cat"/>
<bean id="user" class="com.kuang.pojo.User"/>

                        2.然后在需要装配的私有字段,set方法上添加该注解,即可实现自动装配

public class User {
   @Autowired
   private Cat cat;
   @Autowired
   private Dog dog;
}

                注意:1.该注解可以在没有Set方法的情况下对字段进行注入

                           2.字段名可以和注册的名字不一致,因为是按类型匹配

        2.@Qualifier        在@Autowired上加上该注解,可以在有多个同类型注册的情况下选择使用哪一个

                        个人的理解:

                                1.与@Autowired配对使用,而且是用的时候需要赋值:@Qualifier(value="bean中注册的名字")   

<bean id="dog1" class="com.kuang.pojo.Dog"/>
<bean id="dog2" class="com.kuang.pojo.Dog"/>
<bean id="cat1" class="com.kuang.pojo.Cat"/>
<bean id="cat2" class="com.kuang.pojo.Cat"/>
@Autowired
@Qualifier(value = "cat2")
private Cat cat;
@Autowired
@Qualifier(value = "dog2")
private Dog dog;

                        注意:1.只能和Autowired配对使用 

二、自动配置Bean

                需要引入注解支持

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

 指定注解扫描com.kuang.pojo包下的注解

<context:component-scan base-package="com.kuang.pojo"/>

                3.@Component        将被这个注解标注的类注册到bean中

                        个人理解:1.三步走,引入注解支持,指定被扫描的包,在该包下需要注册bean的类上标注

                                          2.Component中需要传入参数,传入的参数即为bean中所注册的id

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   public String name = "秦疆";
}

                        注意:1.不要忘了指定生效 

                4.@Controller:web层        与@Component等效,只不过用在不同层

                5.@Service:service层        与@Component等效,只不过用在不同层

                6.@Repository:dao层        与@Component等效,只不过用在不同层

                7.@Value        可以在不用set方法的情况下对字段的值进行注入

                        个人理解:1.首先Value中需要传入值,用于给注解的字段进行赋值

@Component("user")
// 相当于配置文件中 <bean id="user" class="当前注解的类"/>
public class User {
   @Value("秦疆")
   // 相当于配置文件中 <property name="name" value="秦疆"/>
   public String name;
}

三、基于Java类进行配置

        有了这个注解就可以不用再配置spring-config.xml文件了

        1.@Configuration        标注在类上,代表这个类是一个配置类

        2.@Bean                      与@Configuration配对使用,在类中的方法上使用,代表注册这个类中的方法到bean中

@Configuration  //代表这是一个配置类
public class MyConfig {

   @Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
   public Dog dog(){
       return new Dog();
  }
}

                注意:被标注@Bean的方法,方法的返回值就是bean的类型,方法名就是bean的id

开启注解支持<context:annotation-config>和指定注解扫描包<context:component-scan>的区别

前者是针对已经在xml中配置注册过的bean生效,后者是指定拿个地方的注解能自动配置bean

@Bean和@Component的区别

网上大体搜了一下概念,看下来感觉就是@Bean比@Component要更加灵活,因为一个类通过@Component只能注册一个bean,而@Bean可以通过创建多个方法来创建不同的bean,可能是这么一回事吧?

SpringMVC

1.@Controller和@RequestMapping

首先要声明在那个包下可以生效

<context:component-scan base-package="com.kuang.controller"/>

@Controller在类上标注,自动注册到Spring中

@RequestMapping在标注@Controller的类中的方法上标注,设置这个类的返回值为String

@RequestMapping("此处填写的地址为程序运行后,输入那个网址可以运行这段程序")

@Controller
public class ControllerTest2{

   //映射访问路径
   @RequestMapping("/t2")
   public String index(Model model){
       //Spring MVC会自动实例化一个Model对象用于向视图中传值
       model.addAttribute("msg", "ControllerTest2");
       //返回视图位置
       return "test";
  }

}

注意:@RestController和@Controller的区别

@Controller下的方法是通过视图解析器跳转到html页面上的

@RestController return的就是字符串(类似于@ResponseBody)

2.@GetMapping和@PostMapping等

以get和post方法请求,get可以通过输入网址直接访问,post需要进行跳转

3.@RestController和@ResponseBody

@RestController是标注在类上的,使这个类的视图解析器都失效,String直接返回字符串而不是导向某个地址

@ResponseBody是标注在方法上的,使这个方法的视图解析器失效,String直接返回字符串而不是某个地址

4.@RequestParam

取别名

用法,在方法的形参前面署名,表示这是一个从前端传递来的参数@RequestParam(“目标名字”)

最好每个从前端获取的数据上都加上这个注解,代表这是一个从前端请求的数据

5.@PathVariable

在url中添加变量

如图所示,将url上拼接上id的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值