spring注解相关知识
-
深入理解spring注解@PropertySource的实现原理之前文章简单的介绍了一下@Value和@PropertySource注解的使用,没有看过的同学可以点击查看:一分钟学会spring注解之@value注解一分钟学会spring注解之@PropertySource注解今天这篇文章将给大家详细的介绍一下@PropertySource注解实现原理首先让我们一起看下@PropertySource的源码如下:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Repeatable(PropertySources.class)public @interface PropertySource { /** * 资源的名称 */ String name() default ""; /** * 资源文件路径,
-
Spring注解配置和xml配置优缺点比较Spring注解配置和xml配置优缺点比较编辑在昨天发布的文章《spring boot基于注解方式配置datasource》一文中凯哥简单的对xml配置和注解配置进行了比较。然后朋友看到文章后,就问:那你说说这两种区别。编辑额,说真的,还真把凯哥给问蒙圈了。本文来源:凯哥Java【kaigejava】凯哥当时就回答:注解的方便。如果再深入呢?还真说不明白。是啊,现在都在说注解好,但是注解和xml比较起来有哪些优点呢?xml又为什么不好呢?有没有深入思考过么?以下内容是凯哥从网上找的并加以理解的。想要弄清楚这个,我们先来看看Xml.就目前Java web 开发应用中都能见到用xml作为配置的身影。在常用的框架中如:struts、spring mvc、hibernate、mybites等这些框架中(早期版本表现更为突出)都有xml配置。我们就来看看XML的优点:Xml优点1:xml是集中式的元数据,不需要和代码绑定的;在我们开发中,xml配置文件和代码类是区分开的。不需要绑定到代码中2:使用xml配置可以让软件
-
spring注解使用一、原始创建对象属性注入介绍属性注入的xml方式介绍(介绍常用的两种方式)(1)使用set方法注入 (2)使用有参数构造注入 1、@Autowiredpackage com.spring.model;public class Tiger { private String tigerName="TigerKing"; public String toString(){ return "TigerName:"+tigerName; }
-
基于Spring注解webservice开发注解介绍 导包 新建webservice接口 @WebService // 使用@WebService标识让CXF知道使用该接口来创建WSDL public interface HelloWorldService { public String getName(String userName); } 新建实现类 @WebService //@Service public class HelloWorldServiceImpl implements HelloWorldService { // @Autowired public String getName(String userName) { return "Hello Spring!" + userName; } } 注入容器 ApplicationContext.xml中加入如下代码 或者
spring注解相关课程
-
2小时实战Apache顶级项目-RPC框架Dubbo分布式服务调度 当前正是微服务、分布式等相关技术盛行的时代,服务与服务之间、接口与接口之间如何进行通信是每个系统架构都会面临的事情。Dubbo作为当前应用相当广泛的服务调度框架,在服务之间的通信起到了关键性的作用。本课程将以代码实战为主、理论概念为辅,一步一个脚印从认识与理解Dubbo开始到基于Spring Boot整合Dubbo搭建实际的企业级应用实战相关实际项目的典型业务场景,讲解了如何采用Dubbo发布、注册服务到注册中心Zookeeper以及如何订阅、调用服务。本课程由浅入深,适合各阶段工程师、程序员观看。
讲师:Debug_SteadyJack 初级 19634人正在学习
spring注解相关教程
- 3.1 EnableHystrix 注解详解 @EnableHystrix 注解是在 Spring Cloud 框架中使用 Hystrix 的基础必须注解,即如果想要在 Spring Cloud 框架中使用 Hystrix ,就必须要先声明 @EnableHystrix 注解,来告诉 Spring Cloud 框架,你要在其中使用 Hystrix 了。EnableHystrix 注解是作用在类上的注解,该注解没有任何参数,可以理解为,只是一个在 Spring Cloud 框架中来开启或关闭 Hystrix 的开关,具体用法我们看以下代码。@EnableHystrixpublic class DemoApplication { // 现在,同学们不需要理解main方法,重点看所使用的注解即可 public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}代码解释:第 1 行,我们将 @EnableHystrix 注解放到了 Spring Boot 项目的启动类上,这就表示,我们开启了 Hystrix ,即我们可以在项目中使用 Hystrix 了。Tips: 在 Spring Boot 项目中,如果想使用 Hystrix ,就一定先要在项目的启动类上,添加上述注解,否则,即使将 Hystrix 的依赖引入到了项目中,也无法使用 Hystrix 及任何功能特性。
- 3. 定义注解 学会使用注解非常简单,很多框架都会提供丰富的注解文档(例如 Spring)。但关键的一点在于定义注解,知道如何定义注解,才能看懂别人定义的注解。下面我们来定义一个注解。想要定义一个注解,通常可分为 3 步:创建注解;定义注解的参数和默认值;用元注解配置注解。关于这 3 个步骤是什么意思,如何来做,我们下面将来详细讲解。
- 2.2 注解作用阐述 1.@Bean 注解的解释:见名知意,此注解作用于方法上,表示方法返回的实例初始化到由 Spring 管理的容器中。其实对现在的我们而言,非常好理解。因为我们知道 Spring 的 IoC 其实就是控制反转,实例化 bean 实例,管理 bean 实例。相当于使用 xml 文件方式的 <bean> 标签,一般来说,此注解出现在被 @Configuration 注释的类中。那么…@Configuration 注解的作用又是什么呢?2.@Configuration 注解的解释:其实看此注解的名称,也能大致猜到它的作用。没错,它的作用就是配置,也就是相当于我们之前编写过很多次的 Spring 配置文件 ——Applicationcontext.xml。之前写过的案例中,Spring 容器的初始化必须加载这个配置文件,而在配置文件中,就包含了很多的 标签,大家没忘记吧?不要提了… 不要关了电脑就忘记之前写过的代码。那么我们上面说 @Bean 标签,一般出现在被此注解注释的类中,就是这个原因。3.@ComponentScan 注解的解释:根据上面两个注解的推断,我们能猜出它的作用就是组件扫描。相当于之前我们在 Spring 的配置文件中用过的标签 context:component-scan,现在讲述使用 JavaConfig 是基于注解的方式,当然也避免不了组件的扫描。此注解也是配置类的组成部分。搭建项目最基本的三个注解给大家介绍过了,下面我们就进入正题。
- 3. 神奇的 @SpringBootApplication 注解 我们来看看这个注解到底是何方神圣!在 Eclipse 中选中该注解,按 F3 即可查看其定义。实例:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication {}看起来很复杂,其实就是一个组合注解,包含了多个注解的功能,咱们来分析一下。首先是 @SpringBootConfiguration 注解,它继承自 @Configuration 注解,功能也跟 @Configuration 一样。它会将当前类标注为配置类了,我们在启动类中配置 Bean 就可以生效了。其次是 @ComponentScan 注解,用来指定我们要扫描的包,以便发现 Bean 。注意在默认情况下, SpringBoot 扫描该注解标注类所在包及其子包。当我们的控制器、服务类等 Bean 放到不同的包中时,就需要通过 @ComponentScan 注解指定这些包,以便发现 Bean 。最重要的是 @EnableAutoConfiguration 注解,用来启动自动配置。开启自动配置后, Spring Boot 会扫描项目中所有的配置类,然后根据配置信息启动 Spring 容器。拥有了 @SpringBootConfiguration ,我们就拥有了一个可以拿来即用的 Spring 容器环境了。
- 2.1 注解分类介绍 按功能划分:创建对象: 对应的就是在 xml 文件中配置的一个 bean 标签,可以定义 id、name、class 等属性;注入数据: 对应的就是在 bean 标签下,使用 property 标签给类中的依赖属性赋值;作用范围: 对应的就是设置 bean 标签的 scope 属性,不设置默认也是单例;生命周期: 对应的就是设置 bean 标签的 init-method 和 destroy-method 方法。2.1.1 创建对象的注解介绍从 Spring 的官网得知一段话:@Repository 注释是针对满足的存储库(也被称为数据访问对象或 DAO)的作用,或者固定型的任何类的标记。也就是说,我们上一节中使用的注解,一般用于 dao 层使用。那么,我们都知道,JAVAEE 体系结构,一般开发分为三个层级:表现层: 主要作用为处理数据生成静态的页面响应给浏览器展示 ;业务层: 主要作用为业务逻辑代码编写,数据的获取,数据的封装返回等等操作都在这里;持久层: 主要作用为跟数据库打交道,对于数据的持久化操作等。那么,如果是创建的表现层或者业务层代码,应该使用什么注解呢?好了,看一下创建对象注解的划分:@Component :一般用于通用组件的类上使用的注解;@Service : 一般用于业务层类上使用的注解;@Controller : 一般用于控制层类上使用的注解;@Repository :一般用于持久层类上使用的注解。官网解释:Spring 提供进一步典型化注解:@Component,@Service,和 @Dao。@Component 是任何 Spring 托管组件的通用构造型。@Repository,@Service 和 @Controller 是 @Component 针对更特定用例的专业化(分别在持久性,服务和表示层)。慕课解释:@Component 注解是 Spring 框架中通用的一个注解,用于组件扫描实例化对象使用, 那么其余的三个注解 @Controller ,@Service,@Repository 都是 @Component 注解的衍生注解,作用跟 @Componet 注解的作用一致。那么意义在于, 三个注解,对应的是三个开发层级 ,一般来讲我们将 @Controller 作为表现层的使用,@Service 作为业务层的注解,@Repository 作为持久层使用的注解。我们下面通过案例演示一下。
- 2.2 @Autowired 注解 1. 为了测试效果,我们创建 Service 和 Dao 两个类, Dao 作为 Service 的依赖。代码如下://service实现类的代码@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public void saveUser() { System.out.println("执行service中的保存逻辑"); }}//dao实现类的代码@Repositorypublic class UserDaoImpl implements UserDao { public void saveUser() { System.out.println("执行dao的保存方法"); }}代码解释:上面代码可以看到,两个类的实例化方式都是通过注解注入到容器, 并且在 service 实现类中的 userDao 属性上面加了注解 @Autowired。我们首先测试下:能否通过这个注解,实现依赖注入,另外再测试下它是否是按照类型注入。2. 配置文件的内容为注解实现 IoC。配置文件解释: 注解实现 IoC 的章节说过,需要通过组件扫描来实例化容器。3. 编写测试代码public class SpringAnTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); UserService userService = context.getBean(UserService.class); userService.saveUser(); }}测试结果:结果解释可以看到 service 中的代码执行,并且通过 dao 的示例调用的方法也执行了,那么说明 @Autowired 注解实现了属性 userDao 的注入。当然这种操作是小儿科,没有一个同学觉得他有什么。 我们验证下它的特点:set 方法我们是省略了,那么它是否按照类型注入的呢?如果我们的实现类中有多个 userDao 接口的实现类呢,又该如何呢?4. 添加 UserDaoImpl2 一样实现 userDao 的接口,代码如下:@Repositorypublic class UserDaoImpl1 implements UserDao { public void saveUser() { System.out.println("执行dao1的保存方法"); }}测试结果结果解释:可以看到上面控制台打印的异常堆栈信息,清楚的提示错误原因,没有指定的 bean 实例 UserDao 类型的,期待单个 bean 匹配,但是找到了两个。一个是 userDaoImpl 一个是 userDaoImpl1。看到这可以证明: @Autowired 注解是按照类型注入,如果匹配的类型多了就会报错。疑问导出:难道使用了 Spring 框架以后,我们的接口只能有一个实现类吗? 当然不可能,毕竟我们看 Spring 的源码的时候 已经看到了,很多的接口对应一大堆的实现类。那么,针对这种多个接口实例的情况,怎么解决的呢?继续我们注解的学习。
spring注解相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议