文章摘要: 摘要内容。
标记为Bean对象 - 在class上定义
@Component
- 标记为普通的类,并注册为Bean。可手动设置注册(添加)到IoC容器中时的名字,例如:
@Component("userDao")
@Controller
- 标记为“控制层”的类,并注册为Bean。例如:
@Controller("userDao")
@Service
- 标记为“业务逻辑层”的类,并注册为Bean。例如:
@Service("userDao")
@Repository
- 标记为“数据访问层”的类,并注册为Bean。例如:
@Repository("userDao")
@DependsOn
- 修改注册顺序,例如:
@DependsOn("userDao"),将会在该对象后面加载(即依赖该对象)
@Lazy
- 懒加载,是否在被调用时才将bean加载到IoC容器中。
注册对象 - 在Java配置类中使用
@Configuration
@Bean
@Inport
依赖注入
@Autowired
- 注入对象类型,告诉通过构造方法实例化时使用哪个构造方法,默认会根据类型去容器中找(byType),如果找到了多个会在根据名字找(byName)。
@Qualifier
- 手动指定在IoC容器中bean对象的名字,作为传入的数据,例如:
@Qualifier("userDao")
请求URL路径映射
- 在类和方法上使用。
- 指定请求的URL路径绑定到该“类”或“方法”上。
@RequestMapping()
- 请求路径映射,写在Controller的类名上或方法上
参数
value:请求URL映射。method:请求方式。params:设置请求参数,是否“必须传值”和“默认值”。params={"<参数名>=123", !"<参数名>", ...}。headers:设置请求头参数。consumes:请求的内容类型必须为指定值。
案例
@Controller
@RequestMapping("/user") // 指定请求的URL路径绑定到该“类对象”或“方法”上。
public class UserController {
@RequestMapping(value="/login", method=RequestMethod.POST) // 指定请求的URL路径绑定到该“类对象”或“方法”上。
public void login(String name) {
}
@RequestMapping(value="/logon", params = {"name=小明"}) // 指定请求的URL路径绑定到该“类对象”或“方法”上。
public void logon(String name) {
}
}
请求参数映射
- 在方法/函数上使用。
@RequestParam
@RequestParam(value, required, defaultValue):GET请求,接收普通的URL中的数据。
@PathVariable
@PathVariable(value, required, defaultValue):GET请求,接收REST风格的URL中的数据。
@RequestBody
@RequestBody:POST请求,body请求体里面的数据,如JSON。
@RequestHeader
@RequestHeader(value, required, defaultValue):获取HTTP协议的请求头中的参数。
@CookieValue
@CookieValue(value, required, defaultValue):获取cookie中的值。
参数
value:手动指定传入的实参名称,默认值是Java形参名称一样。required:是否必须传入值,true必须传值<默认>、false允许为空。defaultValue:默认值,当参数为null时自动设置为默认值。建议使用包装类。
案例
@Controller
public class AdminController {
// 普通的URL
// URL:http://127.0.0.1:8080/web/logon?id=123&name=小明
// 手动指定请求url绑定到该方法
@RequestMapping("/logon")
// GET请求,接收普通的URL中的数据,并手动指定传入的实参名称与java形参名称绑定
public void logon(@RequestParam("id") String id, @RequestParam("name") String name) {
}
// REST风格的URL
// URL:http://127.0.0.1:8080/web/logon/123/小明
// 手动指定请求url绑定到该方法,通过`{}`占位符绑定
@RequestMapping("/login/{id}/{name}")
// GET请求,接收REST风格的URL中的数据,并手动指定传入的实参名称与java形参名称绑定
public void login(@PathVariable("id") String id, @PathVariable("name") String name) {
}
}
请求数据
- 在成员变量和方法上定义。
@Value
- 注入基本类型,一般用于读取配置文件、手动传入具体参数。例如:
@Value("小明")、@Value("${mysql.password}")
@Required
- 适用于bean属性setter方法显式赋值或自动注入值。
响应数据
- 写在方法上。
@ResponseBody
响应数据
bean对象的回调函数
- 在方法上定义。
@PostConstruct
- 初始化回调,创建时执行方法。
@PreDestroy
- 销毁时回调,销毁前执行该方法。