发表于: 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

明天的计划:

没计划了


返回列表 返回列表
评论

    分享到