spring boot对于简化java web开发非常有帮助,基本上不需要什么配置,就可以直接运行起来一个web服务
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
</dependencies>
上面这些配置就可以弄一个简单的rest web服务了,使用内嵌的tomcat web服务器,注意log4j的配置文件,要以log4j-spring.properties命名,放在环境变量里,就能加载到了
-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
注意,mvn打包的时候,加上这个插件,通过添加这个build插件,才能生成可运行的程序,否则部署到机器上可能会出现找不到各种依赖的问题
直接执行mvn package就可以了!!
之前没怎么研究过spring,写的代码通常都是直接内嵌的jetty,那么如何将一个非spring项目弄成一个spring项目呢
我个人开始感到困惑的主要有几点:
1.Autowired
通常一个类中的成员,是spring帮你初始化的,并且这个类的类型通常给一个接口类放在那里,实现类如果有多个呢,spring怎么自动帮你注入?
这时候,这是因为不知道还有个东西叫Qualifier,是配合它使用的,比如一个接口类叫做Mapper
这个接口在定义的时候是不需要任何注解的,那么它的实现和引用就需要注解了,比如它有两个实现,那么为了方便引用
每个实习上分别加入这样的注解
@Service
@Qualifier("impl1")
public class MapperImpl implements Mapper {
@Override
public String getValue() {
return "你妈逼!!";
}
}
@Service
@Qualifier("impl2")
public class MapperImpl2 implements Mapper {
@Override
public String getValue() {
return "我操你妈!!!";
}
}
即通过Qualifier给每个实现起个名字,那么在注入的时候,就要用到这个东西(上面的service换成component应该也是可以的)
用的地方呢,就这样:
@Autowired
@Qualifier("impl2")
private Mapper mapper;
2. spring boot 的启动入口类应该怎么放
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
应该放在包的顶层,要不然下面的一些注解的类扫描不到,启动就会报错,当然肯定有方式指定扫描路径,不一定非得这么放,如果默认,你就要注意了。