注入和自动装箱其实就和引入然后new实例一样,注入了之后就可以实用原有bean的属性和方法
它还可以反射赋值,修改原有bean的属性,但是一般用不上,
大部分情况是用原有bean的属性和方法
注入的作用: 代替了原来需要导入然后new实例化使用类中方法和属性的过程,如果在spring中使用new实例就不是单例了。
@RestController@RestController = @Controller + @ResponseBody:用于定义控制器类,返回json格式
@RequestMapping。示例代码:
@RestController
@RequestMapping(“/demoInfo”)
publicclass DemoController {
@Autowired // 注入容器
private DemoInfoService demoInfoService; // 实例化bean
@RequestMapping("/hello")
public String hello(Map map){
System.out.println("DemoController.hello()");
map.put("hello","from TemplateController.helloHtml");
//会使用hello.html或者hello.ftl模板进行渲染显示.
return"/hello";
}
}
@Resource和@Resource
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入
而@Resource默认按 byName自动注入罢了
@Component@Component表示注解的分类。
- @Component 标注一个类为spring 容器的bean,当组件不好归类的时候,我们可以使用这个注解进行标注。其中的"exeshell"作为Bean的名称.如果不配置的话,那么IOC容器会把类名的第一个字母小写,其他不变作为Bean名放入到容器中.
@Component("exeshell")
public class ExeShell {
public void test_exeshell(){
System.out.println("测试执行shell");
}
}
@Component扩展的注解有下面几个:
- @Repository 作用于持久层
- @Service 作用于业务逻辑层
- 等等
@Service @Repository 都可以用用@Component 代替
通常一些类无法确定是使用 @Service 还是 @Component 时,注解使用@Component 比如redis的配置类等
-
@Entity:@Table(name=”“): 表明这是一个实体类 一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略
-
@NoRepositoryBean: 一般用作父类的repository,有这个注解,spring不会去实例化该repository
-
@Column:如果字段名与列名相同,则可以省略
-
@Id:表示该属性为主键。
-
@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。
-
@JoinColumn(name=”loginId”):
一对一:本表中指向另一个表的外键
一对多:另一个表指向本表的外键。 -
@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交
@PostMapping("bb")
public String myTest0(@RequestBody String jsStr){
System.out.println(jsStr);
return jsStr;
}
// 用实体类接收
// postman 要选择json/application
@PostMapping("cc")
public void myTest1(@RequestBody User user){
System.out.println(user.toString());
System.out.println(user.getCity()); // 取key对应的value
}
实体类如下;
package ye.club.entity;
import lombok.Data;
@Data
public class User {
private String name;
private Integer age;
private String city;
}
@RequestParam 注解
@GetMapping("/charu2")
public String create2(@RequestParam("name") String name,@RequestParam("city") String city) {
//
}



