一-Spring基础(1)-配置-【JavaEE开发的颠覆者】
2018-02-12 10:34
429 查看
一、构建Spring项目
1.使用maven构建项目后,修改pom.xml文件,增加Spring的依赖,添加编译插件,将编译级别设置为1.7.<!--增加Spring的依赖,添加编译插件,将编译级别设置为1.7.--> <properties> <java.version>1.5</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>${java.version}</source> <targer>${java.version}</targer> </configuration> </plugin> </plugins> </build>
二、Spring基础配置
1.Spring框架本身有四大原则(1)使用POJO进行轻量级和最小侵入式开发
(2)通过依赖注入和基于接口编程实现松耦合
(3)通过AOP和默认习惯进行声明式编程
(4)使用AOP和模板(tempalte)减少模式化代码
2.依赖注入
Spring IoC容器(ApplicationContext)负责创建Bean,并通过容器将功能类Bean注入到你需要的Bean中。
声明Bean的注解:
@Component 组件,没有明确的角色
@Service 在业务逻辑层(service层)使用
@Repository 在数据访问层(dao层)使用
@Controller 在展现层(MVC->SpringMVC)使用
注入Bean的注解,易班情况下通用:
@Autowired Spring提供的注解
@Inject JSR-330提供的注解
@Resource JSR-250提供的注解
示例:
(1)编写功能类Bean,FunctionService
package zhao.spring.com.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UseFunctionService { @Autowired FunctionService functionService; public String useFunctionSayHelloWhat(String what){ return functionService.sayHelloWhat(what); } } /** * 使用@Service注解声明当前UseFunctionService类时Spring管理的一个Bean * * 使用@Autowired将FunctionService的实体Bean注入到UseFunctionService中 */
(2)使用功能类Bean
package zhao.spring.com.Service; import org.springframework.stereotype.Service; @Service public class FunctionService { public String sayHelloWhat(String what){ return "Hello "+what+" !"; } } /** * 使用Service注解声明当前FunctionService是Spring管理的一个Bean */
(3)配置类
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("zhao.spring.com.Service") public class DiConfig { } /** * 使用@Configuration声明当前类是一个配置类,之后用到 * * 使用@ComponentScan自动扫描包名下所有使用@Service、@Component、@Repository和@Controller的类,并注册为Bean */
(4)运行
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import zhao.spring.com.Service.UseFunctionService; public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context= new AnnotationConfigApplicationContext(DiConfig.class); UseFunctionService useFunctionService= context.getBean(UseFunctionService.class); System.out.println(useFunctionService.useFunctionSayHelloWhat("ZHAO")); context.close(); } } /** * 使用AnnotationConfigApplicationContext作为Spring容器,接受输入一个配置类作为参数 * * 获得声明配置的UseFunctionService的Bean */
三、Java配置
Java配置是Spring 4.x推荐的配置方式,可以完全代替xml配置;Java配置也是Spring Boot推荐的配置方式。 Java配置是通过@Configuration和@Bean来实现的。 @Configuration声明当前类是一个配置类,相当于一个Spring配置的xml文件。 @Bean注解在方法上,声明当前方法的返回值为一个Bean。 这本书配置的原则:全局配置使用Java配置(如数据库相关配置、MVC相关配置),业务Bean的配置使用注解配置(@Service、@Component、@Repository、@Controller)
示例:
(1)功能类
/* Java配置 */ public class JavaPeizhiFunctionService { public String sayHelloWhat(String what){ return "Hello "+what+" !"; } } /** * 此处没有使用@Service声明Bean */
(2)使用功能类Bean
/* Java配置 */ public class JavaPeizhiUseFunctionService { JavaPeizhiFunctionService javaPeizhiFunctionService; public void setJavaPeizhiFunctionService(JavaPeizhiFunctionService javaPeizhiFunctionService) { this.javaPeizhiFunctionService = javaPeizhiFunctionService; } public String SayHello(String what){ return javaPeizhiFunctionService.sayHelloWhat(what); } } /** * 此处没有使用@Service声明Bean * 此处没有使用@Autowired注解注入Bean */
(3)配置类
/* Java配置 */ @Configuration public class JavaPeizhiConfig { @Bean public JavaPeizhiFunctionService javaPeizhiFunctionService(){ return new JavaPeizhiFunctionService(); } @Bean public JavaPeizhiUseFunctionService javaPeizhiUseFunctionService(){ JavaPeizhiUseFunctionService javaPeizhiUseFunctionService=new JavaPeizhiUseFunctionService(); javaPeizhiUseFunctionService.setJavaPeizhiFunctionService(javaPeizhiFunctionService()); return javaPeizhiUseFunctionService; } // @Bean // public JavaPeizhiUseFunctionService javaPeizhiUseFunctionService(JavaPeizhiFunctionService javaPeizhiFunctionService){ // JavaPeizhiUseFunctionService javaPeizhiUseFunctionService=new JavaPeizhiUseFunctionService(); // javaPeizhiUseFunctionService.setJavaPeizhiFunctionService(javaPeizhiFunctionService); // return javaPeizhiUseFunctionService; // } } /** * 使用@Configuration注解表明当前类是一个配置类,这意味着这个类里可能有0个或者多个@Bean注解,此处没有使用包扫描, * 是因为所有的Bean都在次类中定义了 * 使用@Bean注解声明当前方法JavaPeizhiFunctionService的返回值是一个Bean,Bean的名称是方法名。 * * 注入JavaPeizhiFunctionService的Bean时候直接调用javaPeizhiFunctionService() * 注释掉的是另一种注入方式,直接将JavaPeizhiFunctionService作为参数给javaPeizhiUseFunctionService(),在Spring容器中, * 只要容器中存在某个Bean,就可以在另外一个Bean的声明方法的参数中传入 */
(4)运行
public class JavaPeizhiMain { public static void main(String[] args) { AnnotationConfigApplicationContext context= new AnnotationConfigApplicationContext(JavaPeizhiConfig.class); JavaPeizhiUseFunctionService javaPeizhiUseFunctionService= context.getBean(JavaPeizhiUseFunctionService.class); System.out.println(javaPeizhiUseFunctionService.SayHello("ZHAO")); context.close(); } }
相关文章推荐
- 一-Spring基础(2)-AOP-【JavaEE开发的颠覆者】
- 五-Springboot基础-基础、项目构建-【JavaEE开发的颠覆者】
- 二-Spring常用配置(2)-Bean生命、Profile-【JavaEE开发的颠覆者】
- 二-Spring常用配置(1)-Scope、EL-【JavaEE开发的颠覆者】
- Spring 总结XML配置的十二个最佳实践-Java基础-Java-编程开发
- 三-Spring高级话题(1)-多线程、计划任务-【JavaEE开发的颠覆者】
- Spring Web ,使用annotation和form标签库开发web应用(一)基础配置
- 【JavaEE】SSH+Spring Security基础上配置AOP+log4j
- 【JavaEE】SSH+Spring Security基础上配置AOP+log4j
- 四-Spring MVC基础-MVC、项目搭建-【JavaEE开发的颠覆者】
- JavaEE进阶知识学习-----SpringBoot基础知识-2-配置文件知识
- 「一句话经典」从Spring到SpringMVC再到JavaEE开发颠覆者Spring Boot,最后佛法无边Spring Cloud;只不过却成了nodejs的笑柄
- 基于maven开发spring项目需要配置的一些最基础的依赖
- JavaEE开发之SpringBoot工程的创建、运行与配置
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (2) - 基础框架搭建
- 「一句话经典」从Spring到SpringMVC再到JavaEE开发颠覆者Spring Boot,最后佛法无边Spring Cloud;只不过却成了nodejs的笑柄
- JavaEE开发的颠覆者 Spring Boot实战 PDF清晰完整版+随书源码
- 学习一下《JavaEE开发的颠覆者 Spring Boot实战 》
- JavaEE开发之SpringBoot工程的创建、运行与配置
- Spring Boot基础教程——配置文件-多环境配置