笔记spring boot+jpa

三层架构

1.controller->service->repository 相当于 controller->service->dao
2.repository为接口层,没有具体实现类
3.repository里面只能用find 和 query开头
4.repository需要继承JpaRepository<类,类主键(ID)类型>来获得更多方法
5.在controller层可以直接调用repository层继承的方法。
6.在controller层方法返回值为ResultBean(结果集),需要进行

    ResultBean resultBean = new ResultBean();

    resultBean.setResultCode(ResultBean.SUCCESS);

    resultBean.setRows(Service.方法(参数));

注解

controller层

1.@RestController 相当于“@Controller,@Controller 和@ResponseBody”的作用,在类开头上注明,作用是返回类中所有@RequestMapping(“”) 方法 的结果。

2.@Autowired 和@Resource 都是注入bean,@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。推荐使用:@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。

3.@RequestMapping(params=”tohello”) ,此处”tohello”是参数,在浏览器中访问时要在”?”后面添加参数名。如:http://localhost:8080/project/hello?tohello

4.@GetMapping(“/{id}”) 的作用是获得Get请求,相当于@RequestMapping(method = RequestMethod.GET),可用于查询记录。若id有值查不到则报错

5.@PostMapping(“/add”) 的作用是获得POST请求,相当@RequestMapping(method = RequestMethod.POST)., 可用于往数据表中添加记录。若id有值查不到则不报错

service层
1.@service要说明@Service注解的使用,就得说一下我们经常在spring配置文件applicationContext.xml中看到如下图中的配置:

<context:component-scan base-package=“com.study.persistent” />

在applicationContext.xml配置文件中加上这一行以后,将自动扫描指定路径下的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml配置文件中定义bean了,类似的还包括@Component、@Repository、@Controller。

2.@Transactional事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。本文将着重介绍基于 @Transactional 注解的事务管理。

3.@Value
在项目中发现@value的用法有很多种
@value注入的作用:
通过@value将外部的值动态注入到Bean中。

1、可以注入普通字符串
2、注入操作系统属性
3、注入表达式结果
4、注入其他Bean属性
5、注入文件资源
6、注入URL资源

@value(“nomalChacter”)
private String char;//注入普通字符
@value("#{sytemProperties[‘os.name’]}")
private String systemPropertiesName;//注入操作系统
@value("#{T(java.lang.Math).random()*100.0}")
private double randomNumber;//注入表达式结果
@Value("#{bean.name}")
private String fromAnotherBean; // 注入其他Bean属性:注入beanInject对象的属性name
@Value(“classpath:com/1.txt”)
private Resource resourceFile; // 注入文件资源
@Value(“http://www.gogle.com”)
private Resource testUrl; // 注入URL资源
通过@Value(" a p p . n a m e " ) 语 法 将 属 性 文 件 的 值 注 入 b e a n 属 性 值 。 @ V a l u e ( " {app.name}")语法将属性文件的值注入bean属性值。 @Value(" app.name")bean@Value("{person.name}")
private String name;
@Value("${person.name.firstName}")
private String firstName;//注入name的firstName

上面的用法中有#{}和¥{},二者有什么区别呢
#{…}主要用于执行SpEl表达式,并将内容赋值给属性
KaTeX parse error: Expected 'EOF', got '#' at position 21: …要用于加载外部属性文件中的值 #̲{..}和{…}可以混合使用, 但是必须#{}外面,${}在里面

4.@Override @Override是Java5的元数据,自动加上去的一个标志,告诉你说下面这个方法是从父类/接口 继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记

url过滤器

config目录下的WebSecurityConfig里面进行配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值