发表于: 2017-07-31 00:07:35
1 1263
今天完成的:
。。。
收获:
1.spring boot简单配置
spring boot其实就是spring,他简化了spring的配置。用起来确实非常舒服,根本不需要xml配置。
程序入口
//开启自动配置
@SpringBootApplication
@EnableConfigurationProperties({ConfigBean.class})
public class Application {
/*
启动spring-boot三种方法:
1.main方法,由spring-boot-maven插件配置
2.mvn spring-boot:run,由spring-boot-maven插件配置
3.mvn package,java -jar运行
*/
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
pojo
//读取资源文件的常量,实例化时自动注入
@ConfigurationProperties(prefix = "com.kaibo")
public class ConfigBean {
private String name;
private String mind;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMind() {
return mind;
}
public void setMind(String mind) {
this.mind = mind;
}
}
controller
//@RestController注解等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。
@RestController
/*EnableAutoConfiguration用于自动配置。简单的说,它会根据你的pom配置(实际上应该是根据具体的依赖)来判断这是一个什么应用,并创建相应的环境。
* 这里@EnableAutoConfiguration 会判断出这是一个web应用,所以会创建相应的web环境。*/
@EnableAutoConfiguration
public class Example {
/*
省略了springMVC的所有配置,这里相当于控制器
*/
@Autowired
private ConfigBean configBean;
@RequestMapping("/")
String home() {
return "Hello World!"+configBean.getName()+configBean.getMind();
}
@RequestMapping("/hello/{myName}")
String index(@PathVariable String myName) {
return "Hello " + myName + "!!!";
}
}
pom
<!--- 这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,
spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.BUILD-SNAPSHOT</version>
</parent>
<!-- Add typical dependencies for a web application -->
<!-- Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的,
自动给你封装好了你想要实现的功能的依赖。-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<!--Spring Boot Maven插件提供了许多方便的功能
1.把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,
其中的内容能让你用java -jar来运行应用程序。
2.搜索public static void main()方法来标记为可运行类。-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Add Spring repositories -->
<!-- (you don't need this if you are using a .RELEASE version) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
spring boot的SSM整合项目:http://blog.csdn.net/liboyang71/article/details/73459909
配置非常简单,idea可以直接生成项目结构和依赖。
2.解决了一个从Task4一直困扰我的问题
关于maven聚合项目的依赖传递
正常来讲,父项目必须是<packaging>pom</packaging>,就是没有Jar的。你要使用其他项目的包,就用dependency。如果你出现了想用父项目jar包的情况,那我想你可能对maven的功能理解错了。maven只是一个build tool,它管理的是项目依赖和build过程,它的“父项目”只是pom.xml的设置上的继承,也就是build过程的继承和共享,并不是代码层面的复用。
如果想将父类依赖传递给子项目:
①如果父pom中使用的是<dependencies>....</dependencies>方式,则子pom会自动使用pom中的jar包
②如果父pom使用<dependencyManagement><dependencies>....</dependencies></dependencyManagement>方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,但无需给出version。
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
3.aop
AOP :面向切面编程 ,它主要关注的是程序的执行过程。具体解析:在java方法调用时,AOP机制能自动进行方法拦截,允许在方法调用之前,调用后,以及执行异常时添加特点的代码来完成需要的功能。特点:
①消除编码模块之间的耦合。
② 可以在任意阶段,向已有功能模块中填加新功能,且不侵入原有功能 低侵入式设计
③ 各步骤之间的良好隔离性 , 源代码的无关性
遇到的问题:
1.slf4j报错SLF4J: Class path contains multiple SLF4J bindings.原因是两个包同时引用了slf4j。exclude其中一个就好。
spring boot1.4版本的stater里没有log4j,要使用log4j2。
slf4j是类似接口的日志门面,它不提供日志的实现,有点类似jdbc驱动,给各种数据库提供接口。
2.将jar包打到本地仓库可以直接maven install,以前我都是先package成jar,在手动打命令放到本地库。
3.maven快把我恶心吐了,太痛苦了,完全不知道bug哪来的The POM for com.taotao:taotao-common:jar:1.0-SNAPSHOT is missing, no dependency information available,官方异常文档:
http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
明天的计划:
没计划了
评论