spring boot
使用RPC远程调用
rest风格
右键--Configure Working Sets --new
工程上新建 meaven Project ---选择多选框 Create a simple project, 三个多选框都是选中的---填artifact id 和 group id, 选择packaging为 jar类型
springboot 整合jsp建项目 选择war类型的
pom.xml
引入父类依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactid> spring-boot-starter-parent</artifactid>
<version>1.3.3.RELEASE</version>
</parent>
Springboot-web 组建 springmvc + spring+mybatis
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>//war类型的项目需要引入这个包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>//war类型的项目需要引入这个包
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>//mybatis依赖
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>//mybatis依赖
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>//分布式事务
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
<dependency>//AOP 配置
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
</dependencies>
application.properties文件
spring.mvc.view.prefix=/WEB-INF/jsp/ //war类型项目需要配置
spring.mvc.view.suffix=.jsp //war类型项目需要配置
spring.datasource.username=root //mysql数据源
spring.datasource.password=root //mysql数据源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver //mysql数据源
@EnableAutoConfiguration //注入tomcat,使这个接口可调用
@RestController //返回json格式
@Controller //普通的Controller 上面2选1?
public class HelloWord{
@ResponseBody //返回json格式
@RequestMapping("/index")
public String index(){ return "success" ;}
public static void main(String[]args){
SpringApplication.run(HelloWord.class,args);
}
}
@ComponentScan("com.it.service","com.it.controller") //springboot的包扫描
@EnableAutoConfiguration //注入tomcat,使这个接口可调用
@SpringBootApplication //当前包下不需要注解了???
@EnableJpaRepositories("com.itmayiedu.dao")//JPA dao的包扫描
@EntityScan("com.itmayiedu.entity")//JPA的entity的包扫描
@MapperScan(basePackages={"com.itmyiedu.mapper"}) //mybatis包扫描
@SpringBootApplication //作用 启动项目,整合常用注解,扫包, 只能当前同级包下,与ComponentScan 类似
@EnableConfigurationProperties(value={DBConfig1.class,DBConfig2.class}) //启动的时候读取DBConfig1类
@EnableScheduling //定时任务调度
@EnableAsync //异步执行
public class App{
public static void main(String[]args){
SpringApplication.run(App.class,args);
}
}
静态资源访问
Spring boot默认提供静态资源目录位置需放置于classpath下,目录如下:
/static
/public
/resources
/META-INF/resources
如:src/main/resources/static/d.jpg 访问 http://localhost:8080/d.jpg 即可访问成功
全局捕获异常
@ControllerAdvice
public class GlobalExceptionHandler{
@ExceptionHandler(RuntionException.class)
@ResponseBody //返回json格式
public Map resultError(){
Map resulet = new HashMap();
reulet.put("errorCode","500");
return resulet;
}
}
spring boot 模板殷勤
freemaker、velocity、Thymeleaf动态页面静态化
<dependency>//freemaker 的依赖包
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
freemaker 使用ftl文件做显示
JPA //继承JpaRepository,里面增删改都有提供
public interface UserDao extends JpaRepository<User,Integer>{
}
分布式事务,多数据源是 使用包名来区分的
解决方案 1。jta + automatic
2。注解方式 ,自定义注解分来数据源
@Configuration //注册到springBoot容器中
@MapperScan(basePackages="com.itmayiedu.test01", sqlSessionFactoryFef="test1SqlSessionFactory") //包扫描com.itmayiedu.test01 , SqlSession
public class DataSource1Config{
@Bean(name="test1DataSource")
@ConfigurationProperties(prefix="spring.datasource.test1") //获取property配置文件中的值
@Primary
public DataSource testDataSource(){
return DataSourceBuilder.create().build();
}
}
springBoot事务分类,包括 编程事务、声明事务(xml方式、注解方式)
@Autowired //自动注入
UserMapperTest01 userMapperTest01;
@Transactional //事务 事务只管理当前function,事务有传递作用
public String insertTest01(String name,Inter age){
userMapperTest01.insert(name,age);
}
420万 3房
分布式事务,autoCAD
pom.xml引入依赖包
@ConfigurationProperties(prefix="mysql.datasource.test1") //将property文件中mysql.datasource.test1注入到类中对应字段
public class DBConfig1{
private String url;
getUrl(){}
setUrl(){}
}
AOP 配置
@Aspect //定义一个切面
@Component //注入到容器里面
public class WebLogAspect{ //使用切面打印日志,只要controller包下的被调用就会触发 doBefore方法
private static Logger logger = Logger.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.itmayiedu.controller..*.*(..))") //定义一个切入点, *任何返回值,controller下的子包,*.*任何类任何方法,(..) 任何参数
public void weblog(){}
@Before("webLog)()")
public void doBefore(JoinPoint joinPoint)throws Throwable{
//接收请求,记录请求内容
ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.getRequestAttribute();
HttpServletRequest request = attr.getRequest();
Logger.info(####请求开始);
logger.info("url: "+ request.getRequestURL().toString());
logger.info("HTTP_METHOD: "+ request.getMethod());
logger.info("IP: "+ request.getRemoteAddr());
Enumeration<Sring> enu = request.getParameterName();
while(enu.hasMoreElements()){
String name = (String)enu.netElement();
logger.info("name : "+name+" value: "+request.getParamenter(name));
}
}
}
spring 定时任务,大公司都是任务调度平台
@Component
public class ScheduledTasks{
@Scheduled(fixedRate=1000) //每隔1秒调度一次
public void test(){
System.out.println("正在每隔1秒打印一次。。");
}
}
异步执行
@Async //调用此代码是异步的,主调方法不需要等此方法完成后执行。
public String sendSms(){
System.out.println("111");
}
自定义参数
@Value("${appName}")// property文件中有appName=aaa 这个参数,就会自动放入变量中
private String appName;
setAppName(){}
getAppName(){}
property文件的多环境区分
在appliction.properties中配置
spring.profiles.active=sit
server.port=8888 //修改端口号
server.context-path=/itmayiedu //修改域名
YML文件,编写的时候会有提示
server:
port: 8090 //:后面必须有空格
context-path: itmayiedu
spring支持redis
<dependencies>
<dependency>//redis
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency> //redis
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependency>
</dependencies>
redis有5种数据类型:string,list,set,zset,hash
springboot 打包
在pom.xml文件中指定程序入口
项目邮件--〉控制台
在控制台: mvn package //项目是jar类型的 打出来就是 .jar包
运行:java -jar jar包名称