前言
最近学习了一下SSM,不得不说,spring不用注解真的是天打雷劈,就那个bean真的就是折磨人。
下面是我总结的spring注解。
@Value
此注解可以用来获取导入的jdbc.properties文件的值。
@Value("${jdbc.driver}")
private String driver;//用法是这样的
jdbc.properties文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root
@Bean
此注解一般是写在方法前面,使这个返回值作为一个bean返回,交给spring管理。
例如现在这个数据库连接方法:
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Configuration
此注解用于设置当前类为配置类,一般用法如下
@Configuration
public class SpringConfig {
}
@ComponentScan
此注解用于批量注册bean,这个注解会让spring扫描指定包及其子包中所有的类,得到一批类的数组,然后将满足过滤器条件的类作为bean注册到spring容器中。
用法如下:
@ComponentScan({"com.itheima.service"})
扫描com.itheima.service包下的类,然后注册为bean以供调用
@PropertySource
此注解通常用于连接数据库的配置文件,获取jdbc.properties的值
例:
@PropertySource("classpath:jdbc.properties")
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root
然后使用@Value可以获取jdbc里面的值
Import
此注解用于导入配置类
例如,我现在有两个配置文件JdbcConfig.class,MyBatisConfig.class
现在我要整合到SpringConfig.class配置类中,那么我们就要使用@import注解了
用法如下:
@Import({JdbcConfig.class,MyBatisConfig.class})
@EnableTransactionManagement和@EnableWebMvc
开启MyBatis事务支持和开启SpringMVC注解支持
基本无脑加在SpringConfig配置类上就完事了
配置类基本上都是固定的,其他的按照需求改就行了
@RestController
@RestController的作用等同于@Controller + @ResponseBody。
创建一个控制器类
类似于javaweb中的Servlet,为网站访问提供业务
@RestController
public class BookController {}
@RequestMapping
用法:
@RequestMapping("/books")
public class BookController {}
@Autowired
自动装配
省略了new方法,一步装配到位
比如说我有一个BookService类
我直接装配到我的Controller配置类当中
用法是这样的
@Autowired
private BookService bookService;
REST风格注解
先看我做的笔记
http://localhost/users 查询全部用户信息 GET(查询)
http://localhost/users/1 查询指定用户信息 GET(查询)
http://localhost/users 添加用户信息 POST(新增/保存)
http://localhost/users 修改用户信息 PUT(修改/更新)
http://localhost/users/1 删除用户信息 DELETE(删除)
这里是网站申请服务的路径
然后我们看总的代码(Controller控制器类里面的方法)
@PostMapping//这里是保存
public Result save(@RequestBody Book book) {
boolean flag = bookService.save(book);
return new Result(flag ? Code.SAVE_OK:Code.SAVE_ERR,flag);
}
@PutMapping//这里是修改
public Result update(@RequestBody Book book) {
boolean flag = bookService.update(book);
return new Result(flag ? Code.UPDATE_OK:Code.UPDATE_ERR,flag);
}
@DeleteMapping("/{id}")//这里是删除
public Result delete(@PathVariable Integer id) {
boolean flag = bookService.delete(id);
return new Result(flag ? Code.DELETE_OK:Code.DELETE_ERR,flag);
}
@GetMapping("/{id}")//这里是通过id查询
public Result getById(@PathVariable Integer id) {
Book book = bookService.getById(id);
Integer code = book != null ? Code.GET_OK : Code.GET_ERR;
String msg = book != null ? "" : "数据查询失败,请重试!";
return new Result(code,book,msg);
}
@GetMapping//这里是查询所有
public Result getAll() {
List<Book> bookList = bookService.getAll();
Integer code = bookList != null ? Code.GET_OK : Code.GET_ERR;
String msg = bookList != null ? "" : "数据查询失败,请重试!";
return new Result(code,bookList,msg);
}