Spring 快速开始 配置Spring Framework
【配置Spring Framework】
1.XML配置依赖关系
bean是由Springframework管理,我们自己编写bean,Spring也内建了bean,比如ApplicationContext、ResourceLoader、BeanFactory、MessageSource、ApplicationEventPublisher。
【Servle级别上下文】/WEB-INF/servletContext.xml
<beans>
<mvc:anntation-driven /> <!-- 作用是 指示Spring使用@RequestMapping @RequestBody @RequestParam @PathParam @ResponseBody --->
<bean name="greetingServiceImpl" class="com.wrox.GreetingServiceImpl" />
<bean name="helloController" class="com.wrox.GreetingServiceImpl" >
<property name="greetingService" ref="greetingServiceImpl" />
</bean>
</beans>
【@RequestMapping细节】
在声明了DispatcherServlet后,@RequestMapping是相对于Dispatcher的URL-pattern而不一定是web程序根URL。
【上下文细节】
一般的程序都有两个上下文,【根上下文用来容纳业务逻辑类】+【Servlet级别上下文用来容纳控制器类】
【根上下文级别】/WEB-INF/rootContext.xml 声明的bean ,DispatherServlet的应用上下文也会继承所有根上下文的bean。
<beans>
<bean name="greetingServiceImpl" class="com.wrox.GreetingServiceImpl" / >
</beans>
然后在web.xml部署描述符
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/rootContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
【Spring日志细节】log4j-jcl 支持Spring用Commons Logging打印日志到Log4j。
……………………………………………………………………………………………………………………………………………………………………………………………………
2.混合配置依赖关系 = 组件扫描 + 注解配置。
@Component 组件注解 ,@Controller @Repository @Service + @AutoWired
【上下文细节目标】根上下文容纳Service、Repository和其他业务逻辑,DispatcherServlet上下文容纳Controller。
/WEB-INF/rootContext.xml 【黑名单】
<beans>
<context:annotation-config />
<context:component-scan base-package="com.wrox" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context-component-scan>
</beans>
/WEB-INF/servletContext.xml 【白名单】
<beans>
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.wrox" use-default-filters="false" />
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
【组件扫描不到的bean】第三方已经编译成Class无法通过添加注解 都可以在配置中 声明bean补充组件扫描扫不到的地方。
……………………………………………………………………………………………………………………………………………………………………
【使用@Configuration配置Spring】XML难于调试、XML无法单元测试(只能集成测试)。 + @Inject
1.引入外部Properties
@Configuration
@PropertySource({("classpath:com/wrox/config/settings.properties","file:config.properties")})
public class ExampleConfiguration{
//如果需要访问properties的值
@Inject Environment environment;
@Value("my.property.key") String myPropertyValue; //自动注入
}
2.拆分多个配置
@Configuration
@Import({DatabaseConfiguration.class,ClusterConfiguration.class})
@ImportResource("classpath:com/wrox/config/spring-security.xml")
public class ExampleConfiguration
@Configuration
@ComponentScan(
basePackages = "com.wrox.site",
excludeFilters = @ComponentScan.Filter(Controller.class)
)
public class RootContextConfiguration
{
}
@Configuration
@EnableWebMvc
@ComponentScan(
basePackages = "com.wrox.site",
useDefaultFilters = false,
includeFilters = @ComponentScan.Filter(Controller.class)
)
public class ServletContextConfiguration
{
}
public class Bootstrap implements WebApplicationInitializer
{
@Override
public void onStartup(ServletContext container) throws ServletException
{
//静态资源
container.getServletRegistration("default").addMapping("/resource/*"); AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(RootContextConfiguration.class);
container.addListener(new ContextLoaderListener(rootContext)); AnnotationConfigWebApplicationContext servletContext =
new AnnotationConfigWebApplicationContext();
servletContext.register(ServletContextConfiguration.class);
ServletRegistration.Dynamic dispatcher = container.addServlet(
"springDispatcher", new DispatcherServlet(servletContext)
);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
Spring 快速开始 配置Spring Framework的更多相关文章
- 在eclipse中,使用spring tool suite配置spring环境
本人第一次接触spring,在经过一天的努力之后,终于成功配置了spring环境. 使用spring tool suite配置 1.打开eclipse,选择help->Eclipse marke ...
- Spring 快速开始 启动Spring
[启动Spring必须配置] [web.xml部署描述符方式] 1.配置Servlet级别上下文 <servlet> <servlet-name>springDispatche ...
- Spring MVC 零配置 / Spring MVC JavaConfig
1. Spring MVC的核心就是DispatcherServlet类,Spring MVC处理请求的流程如下图所示: 2. Spring MVC中典型的上下文层次 当我们初始化一个Dispatch ...
- spring boot所有配置
转载 http://blog.csdn.net/lpfsuperman/article/details/78287265 # 日志配置# 日志配置文件的位置. 例如对于Logback的`classpa ...
- Spring Boot自动配置如何工作
通过使用Mongo和MySQL DB实现的示例,深入了解Spring Boot的@Conditional注释世界. 在我以前的文章“为什么选择Spring Boot?”中,我们讨论了如何创建Sprin ...
- 【Spring】Spring的数据库开发 - 1、Spring JDBC的配置和Spring JdbcTemplate的解析
Spring JDBC 文章目录 Spring JDBC Spring JdbcTemplate的解析 Spring JDBC的配置 简单记录-Java EE企业级应用开发教程(Spring+Spri ...
- Spring全家桶之spring boot(一)
spring boot框架抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程.使用spring boot之后就不用像以前使用ssm的时候添加那么多配置文件了,spring boot除了支 ...
- 【Spring Boot&&Spring Cloud系列】Spring Boot中使用数据库之MySql
对于传统关系型数据库来说,Spring Boot使用JPA(Java Persistence API)资源库提供持久化的标准规范,即将Java的普通对象通过对象关系映射(ORM)持久化到数据库中. 项 ...
- Spring Boot系列二 Spring @Async异步线程池用法总结
1. TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncT ...
随机推荐
- HDU--5519 Sequence II (主席树)
题目链接 2016年长春ccpc I 题 题目大意 : 给你n(n≤2∗105n≤2∗105)个数,每个数的大小 0<Ai≤2∗10^5 0<Ai≤2∗10^5. 再给你m(m≤2∗1 ...
- JAVA多线程之volatile 与 synchronized 的比较
一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间--线程栈空 ...
- Minieye杯第十五届华中科技大学程序设计邀请赛网络赛 部分题目
链接:https://pan.baidu.com/s/12gSzPHEgSNbT5Dl2QqDNpA 提取码:fw39 复制这段内容后打开百度网盘手机App,操作更方便哦 D Grid #inc ...
- 第四节,Neural Networks and Deep Learning 一书小节(上)
最近花了半个多月把Mchiael Nielsen所写的Neural Networks and Deep Learning这本书看了一遍,受益匪浅. 该书英文原版地址地址:http://neuralne ...
- io系列之常用流二
一.对象的序列化.持久化. 将java的对象的基本数据类型和图形存入文件中,实现对象数据的序列化和持久化. 操作对象可以使用: ObjectOutPutStream 和 ObjectInPutStre ...
- IDEA或Webstorm设置Ctrl+滚轮调整字体大小
按Ctrl+Shift+A,出现搜索框 输入mouse: 点击打开这个设置:勾选 点击ok,之后就可以通过Ctrl+滚轮 调整字体大小了.
- windows server 2012 流媒体服务器搭建(直播与点播)
IIS Live Smooth Streaming(实时平滑流式处理)是微软下一代流媒体解决方案.该技术是在IIS web中集成媒体传输平台IIS media services,实现利用标准 HTTP ...
- linux简单优化
1.简单优化 #关闭firewalld,selinux,NetworkManager systemctl(管理服务的命令) stop(关服务) firewalld (服务名称,d是demo的意思) s ...
- Vue.js 条件与循环
条件判断: v-if: 条件判断使用 v-if 指令: v-else-if:(其实和Java,c,js的语法差不多) v-show:
- influxDB和grafana
influxdb启动服务 sudo service influxdb start 登录数据库 influx 在influxDB中,measurement相当于sql中的table, 插入measure ...