是Spring啊!-创新互联
- spring概念
一个包含了众多工具方法的 IoC 容器
目前创新互联公司已为上千余家的企业提供了网站建设、域名、虚拟主机、网站托管、服务器租用、企业网站设计、鹤山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。okk~~分析一下这句话意思,众多方法,IoC 是形容词,容器是名词 ->
众多方法:比如一个类里有许多方法, 容器:存储的东西 重点就是IoC是什么?
- Ioc
IoC ->Inversion of Control 控制反转 ->对象的生命周期 ->控制权: 由程序猿 变为 Spring IoC
简单来说 Java里的对象的创造和销毁都是被程序猿掌控的, 但是IoC的话 就变了, 掌控这些的不是程序猿了,而是Spring
2.2 意义所以,把对象的生命周期的控制权交出去了,有什么好处?
~解耦合!!!!
每个对象都要程序猿创建,如果1的创建需要2,2的创建需要3..... 那么当代码出现异常,76出现了bug - >前面的1到75就会都有问题产生 ->所以这个时候,好处显而易见
~并且,对象的生命周期交给IoC维护, 作为程序猿无需关注
- DI
其实IoC只是一个思想, 那么具体的实现其实是 DI
DI ->Dependency Injection 依赖注入
IoC DI 从不同的维度描述了同一件事 比如->我的计划和实际操作(我要学会一门乐器->钢琴十级了现在)
二.创建一个Spring项目 1.复杂的创建 1.1.创建 1.1.1创建一个maven项目 1.1.2添加spring配置文件


spring.xml的代码
pom.xml
org.springframework spring-context5.2.3.RELEASE org.springframework spring-beans5.2.3.RELEASE
1.1.3创建spring对象




ApplicationContext BeanFactory 区别:
* 相同:
都可以实现从容器中获取 bean, 都提供了 getBean的方法
* 不相同:
* 1.ApplicationContext 是 BeanFactory 的子类,
* BeanFactory只提供了基础访问 Bean的方法
* ApplicationContext 除了拥有 BeanFactory的所有功能外,还提供了更多的方法,对国际化的支持,资源访问支持...
* 2.性能方面
* BeanFactory 按需加载 Bean
* ApplicationContext饿汉模式, 创建的时候所有 Bean都加载了(貌似是智能的,电脑空间够,才行,不够的话,还是按需加载)
2.简单的创建 2.1创建 - 5大类注解



org.springframework spring-context5.2.3.RELEASE org.springframework spring-beans5.2.3.RELEASE
2.1.2 5大类注解
2.1.2.1 5大类注解@Controller 控制器 业务逻辑层
@Service 服务 服务层
@Repository 仓库 持久层
@Configuration 配置 配置层
@Component 组件
2.1.2.2 5大类注解的意义@Configuration ->@Controller 控制器 (前端参数的校验) ->@Service(数据的组装,接口的调用) ->@Repository(和数据库进行交互)
可以让代码可读性提高, 让程序员快速知道当前类的用途
比如 Java里的 @Override 看到就知道被标注的方法重载了父类的方法
2.1.2.3 5大类注解的关系其他四个类本身是属于 @Component 的“⼦类”--看源码




public static void main(String[] args) {
String name1 = "user";
String name2 = "USER";
System.out.println(Introspector.decapitalize(name1));
System.out.println(Introspector.decapitalize(name2));
}
2.2创建-使用方法注解@Bean
2.2.1使用方法注解@Bean



设置 name 属性给 Bean 对象进⾏重命名


* Bean 的命名规则 :
* 当没有设置 name属性时, 那么 bean的默认名称时方法名
* 通过重命名的 name属性对应值来获取后, 只能用重命名, 不能再用方法名
name={} 可以省略

* Bean 的命名可以起多个名字 :

但是会有问题--同⼀类型多个 @Bean 报错


* @Bean 将一个类型的对象注入多次
* 解决方案三个
* 1. 精确的描述 bean的名称
* 2. 使用 @Resource设置 name的方法来重新命名注入对象 @Resource(name="user")
* 3. 使用 @Autowired+ @Qualifier来筛选 bean对象



你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
新闻标题:是Spring啊!-创新互联
文章源于:http://pwwzsj.com/article/csdpop.html